发布时间:2025-12-10 23:00:38 浏览次数:1
选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
重复第二步,直到所有元素均排序完毕。
publicstaticvoidselectSort(int[]arr){//选择排序if(arr==null||arr.length<2){return;}intn=arr.length;for(inti=0;i<n;i++){intminValueIndex=i;for(intj=i+1;j<n;j++){minValueIndex=arr[j]<arr[minValueIndex]?j:minValueIndex;}swap(arr,i,minValueIndex);}}publicstaticvoidswap(int[]arr,inti,intj){inttmp=arr[i];arr[i]=arr[j];arr[j]=tmp;}publicstaticvoidprintArray(int[]arr){for(inti=0;i<arr.length;i++){System.out.print(arr[i]+"");}System.out.println();}publicstaticvoidmain(String[]args){int[]arr={7,5,1,9,4,2,6};printArray(arr);selectSort(arr);printArray(arr);}**冒泡排序算法的原理如下: **
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
publicstaticvoidbubbleSort(int[]arr){if(arr==null||arr.length<2){return;}intn=arr.length;for(inti=n-1;i>=0;i--){for(intj=0;j<i;j++){if(arr[j]>arr[j+1]){swap(arr,j,j+1);}}}}publicstaticvoidswap(int[]arr,inti,intj){inttmp=arr[i];arr[i]=arr[j];arr[j]=tmp;}publicstaticvoidmain(String[]args){int[]arr={14,6,3,10,2};printArray(arr);bubbleSort(arr);printArray(arr);}插入排序是指在待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插入第n个数的这个序列也是排好顺序的。按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序
publicstaticvoidinsertSort(int[]arr){if(arr==null||arr.length<2){return;}intn=arr.length;for(inti=1;i<n;i++){intcurrIndex=i;while(currIndex-1>=0&&arr[currIndex-1]>arr[currIndex]){swap(arr,currIndex,currIndex-1);currIndex--;}}}publicstaticvoidswap(int[]arr,inti,intj){inttmp=arr[i];arr[i]=arr[j];arr[j]=tmp;}publicstaticvoidmain(String[]args){int[]arr={3,6,1,5,2};printArray(arr);insertSort(arr);printArray(arr);}插入排序优化
publicstaticvoidinsertSort1(int[]arr){if(arr==null||arr.length<2){return;}intn=arr.length;for(inti=1;i<n;i++){for(intj=i-1;j>=0;j--){if(arr[j]>arr[j+1]){swap(arr,j,j+1);}else{break;}}}}读到这里,这篇“Java排序算法是什么及怎么实现”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注本站行业资讯频道。