当前位置: 首页 > 后端技术 > Python

【Java笔记】八种常用的排序算法和代码实现,十分钟搞定

时间:2023-03-25 19:26:44 Python

1.直接插入排序主要解决向已经排列好的数据列中插入新数据的问题。将第一个数和第二个数排序,然后形成一个有序序列,插入第三个数,形成一个新的有序序列。对于第四个数,第五个数……直到最后一个数,重复第二步。代码怎么写:先设置插入次数,也就是循环次数,for(inti=1;i=0&&a[j]>insertNum){//序列从后向前循环,大于insertNum的数向后移动一格a[j+1]=a[j];//将元素移动一格j--;}a[j+1]=insertNum;//将要插入的数字放在要插入的位置。}}2。希尔排序针对直接插入排序问题,当数据量巨大时。设数的个数为n,取一个奇数k=n/2,将下标差为k的书分成一组,组成有序数列。然后取k=k/2,将下标差为k的书分成一组,组成有序序列。重复第二步直到k=1,进行简单插入排序。代码怎么写:先确定组数。然后对组中的元素执行插入排序。然后length/2,重复步骤1和2,直到length=0。代码实现如下:publicvoidsheelSort(int[]a){intd=a.length;while(d!=0){d=d/2;for(intx=0;x=0&&temp=0;i--){//k保存被判断的节点intk=i;//如果当前k节点的子节点存在while(k*2+1<=lastIndex){//k节点左子节点的索引intbiggerIndex=2*k+1;//如果biggerIndex小于lastIndex,即biggerIndex+1所代表的k个节点的右子节点存在if(biggerIndexa[j+1]){温度=a[j];a[j]=a[j+1];a[j+1]=温度;}}}}6。当快速排序需要最快的时间。选择第一个数字作为p,小于p的数字放在左边,大于p的数字放在右边。按照第一步递归的进行p左右的数,直到递归不下去。代码实现如下:publicstaticvoidquickSort(int[]numbers,intstart,intend){if(startbase)&&(j>start))j--;如果(i<=j){temp=numbers[i];数字[i]=数字[j];数字[j]=温度;我++;j--;}}while(i<=j);如果(开始i)quickSort(numbers,i,end);}}7.归并排序的速度仅次于Quicksort,在内存较少时使用,在可以进行并行计算时使用。选择两个相邻的数字组成有序序列。选择两个相邻的有序序列组成一个有序序列。重复第二步,直到全部形成有序序列。代码实际如下:publicstaticvoidmergeSort(int[]numbers,intleft,intright){intt=1;//每组元素个数intsize=right-left+1;while(tmax){max=array[i];}}int时间=0;//判断位数;while(max>0){max/=10;时间++;}//构建10个队列;列表queue=newArrayList();for(inti=0;i<10;i++){ArrayListqueue1=newArrayList();queue.add(queue1);}//进行时间分配和收集;for(inti=0;iqueue2=queue.get(x);队列2.add(数组[j]);queue.set(x,queue2);}intcount=0;//元素计数器;//收集队列元素;for(intk=0;k<10;k++){while(queue.get(k).size()>0){ArrayListqueue3=queue.get(k);}array[count]=queue3.get(0);queue3.remove(0);计数++;}}}}

最新推荐
猜你喜欢