精华内容
下载资源
问答
  • 思路分析:首先对序列进行... * 功能:将无序序列调整为无重复元素的有序序列 * 去重规则:重复元素的第一个删除,第二个倍乘 * 说明:可以使用Arrays.asList(...)将数组转为List; * @param lists 无序序列 * @retu

    思路分析:首先对序列进行排序,接着定义一个指向序列头的指针,逐次向后搜索,直至指针指向序列尾部。指针比较当前元素与下一元素是否相等(重复),相等时移除第一个元素,第二个元素倍乘,再对更新的序列重排序;不相等时,指针右移。

       /**
         * 功能:将无序序列调整为无重复元素的有序序列
         * 去重规则:重复元素的第一个删除,第二个倍乘
         * 说明:可以使用Arrays.asList(...)将数组转为List;
         * @param lists 无序序列
         * @return 无重复元素的有序序列
         */
        public static List<Long> print(ArrayList<Long> lists) {
            Collections.sort(lists); // 让初始数据有序
            int i = 0;
            while (true) {
                if (i == lists.size() - 1) {
                    break;
                }
                int l = i + 1; // 相邻比较
                if (lists.get(i).equals(lists.get(l))) {
                    // 移除两个数,添加一个数
                    lists.remove(i);
                    lists.add(lists.remove(i) * 2);
                    Collections.sort(lists); // 数据更新之后需要重排序
                } else {
                    i = l; // 右移
                }
            }
            return lists;
        }
    
    展开全文
  • public class 在有序序列中插入字符 { /** * 在有序序列中插入字符 */ public static void main(String[] args) { //定义变量 char[] zifu=new char[9]; zifu[0]='a'; zifu[1]='d'; zifu[2]='e'; ...

    代码如下:

    import java.util.Arrays;
    
    public class 在有序序列中插入字符 {
    	/**
    	 * 在有序序列中插入字符
    	 */
    	public static void main(String[] args) {
    		//定义变量
    		char[] zifu=new char[9];
    		zifu[0]='a';
    		zifu[1]='d';
    		zifu[2]='e';
    		zifu[3]='c';
    		zifu[4]='i';
    		zifu[5]='g';
    		zifu[6]='h';
    		zifu[7]='f';
    		char cha='b';
    		int xiabiao=0;
    		//处理
    		for (int i=0;i<zifu. length;i++){
    		System.out.print(zifu[i]);
    		}
    		Arrays.sort(zifu);
    		System.out.println("\n升序排列后:");
    		for (int i=0;i<zifu. length;i++){
    		System.out. print(zifu[i]);
    		}
    		System.out.println("\n待插入的字符是:"+cha);
    		for (int i=0;i<zifu. length-1;i++){
    			System.out. print(zifu[i]);
    			if(cha<zifu[i]){
    				xiabiao=i;
    				break;
    		}
    		}
    		System.out.println("插入字符的下标是:"+xiabiao);
    		for (int i=zifu.length-1;i>xiabiao; i--){
    		zifu[i]=zifu[i-1];
    		}
    		zifu[xiabiao]=cha;//插入元素
    		//输出
    		System.out. println("插入后的字符序列是:");
    		for (int i=0; i<zifu.length;i++)
    		System.out. print(zifu[i]);
    		}
    		
    	}
    

    显示结果:

    在这里插入图片描述

    展开全文
  • 请看下面的例子ptrdiff_t myrandom(ptrdiff_t i){return rand()%i;}ptrdiff_t (*p_myrandom...//此处定义一个函数指针,指向产生随机数的方法函数template void vrand(vector &v,ptrdiff_t (*p_myrandom)(ptrdiff_t))//

    请看下面的例子

    以上例子中因使用了模板,所以可以对各种类型进行随机排序。

     

    以上例子中展示了C++,通过使用STL可以简单的实现随机序列,体现了STL的强大。

    展开全文
  • 定义两个指针分别指向序列的开始。如果指向的两个元素相等,则找到一个相同的元素;如果不等,则将指向较小元素的指针向前移动。重复执行上面的步骤,直到有一个指针指向序列尾端。 大致的code: void CommonElem...

    问题:

    给定两个已排序序列,找出共同的元素.设分别为A,B,数组长度分别为M,N

    方法1

    定义两个指针分别指向序列的开始。如果指向的两个元素相等,则找到一个相同的元素;如果不等,则将指向较小元素的指针向前移动。重复执行上面的步骤,直到有一个指针指向序列尾端。

    大致的code

    void CommonElem(const int *A,int ASize,const int *B,int BSize,vector<int>& common)
    {
        int i=0,j=0;
        while(i<ASize && j<BSize)
        {
            if(A[i] == B[j])
            {
                common.push_back(A[i]);
                ++i,++j;
            }
            else if(A[i]  > B[j]) ++j;
            else ++i;
        }
    }

    时间复杂度:O(M+N)

    方法2:遍历一个元素个数较小的数组A,对于A[i],在另外一个数组B中二分查找A[i].

    而且二分还是可以优化的,如果找到了,就可以重新设置二分查找的低位,没有找到则不变。因为两个数组都是已排序的,下一个出现的数字一定会在当前出现的数字之后。

    时间复杂度:小于min(M,N)*log(max(M,N))

     

    当两个数组长度接近时候使用方法1,当一个数组长度远大于另外一个的时候使用方法2,当然使用方法2的限制是元素序列是顺序存储。

     

    展开全文
  • 有序链表序列的合并

    2019-10-20 01:28:38
    两个有序链表序列的合并 (30 分) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。 函数接口定义: List Merge( List L1, List L2 ); 其中List结构定义如下: typedef struct Node...
  • 题目要求在给定两个长度分别为m和n的有序序列时,找出这两个序列合起后的中位数。并且要求时间复杂度为O(log(m+n))。首先,中位数的定义是,当序列长度为偶数时,中位数的值为序列中间两个数的均值;当序列为奇数时...
  • 两个有序链表序列的合并 标签(空格分隔): 数据结构 算法竞赛 02-线性结构1 两个有序链表序列的合并(15 分) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。 函数接口...
  • PTA 两个有序链表序列的合并 题目描述: 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。 函数接口定义: List Merge( List L1, List L2 ); 其中List结构定义如下: typedef ...
  • 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。 函数接口定义: List Merge( List L1, List L2 ); 其中List结构定义如下:typedef struct Node *PtrToNode; struct ...
  • 1.宏定义数组元素个数为ARRNUM=10 函数原型声明void AscendSorting(int a[]); 函数原型声明int Bisearch(int x,int *a[],int left, int right); 2.设计函数 2.1设计函数void AscendSorting(int a[]) 2.1.1函数功能 ...
  • 02-线性结构1 两个有序链表序列的合并 (15分) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。 函数接口定义: List Merge( List L1, List L2 ); 其中List结构定义如下: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,214
精华内容 1,285
关键字:

有序序列定义