首页 > 编程知识 正文

冒泡排序的算法思想(直接排序和冒泡排序)

时间:2023-05-06 13:10:50 阅读:68448 作者:393

传统气泡排序算法和两种改进的气泡排序算法传统气泡排序算法publicstaticvoidbubblesort (int [ ] arr ) { long start=0; 长结束=0; start=System.nanoTime (; int temp; //临时变量//i定义后,鼓泡次数数组的长度-1次鼓泡中for(intI=0; iarr.length-1; I ) for(intj=1; jarr.length-i; j ) (/比较左右大小if (arr [ j-1 ] arr [ j ] ) { temp=arr[j-1]; arr[j-1]=arr[j]; arr[j]=temp; } } } end=System.nanoTime (; System.out.println ('总时间: ' (结束-开始) '纳秒'); )改进1 )添加记录每个鼓泡是否存在元素交换的标志,如果没有更换则结束鼓泡) publicstaticvoidbubblesort1(int [ ] arr ) { long start=0; 长结束=0; start=System.nanoTime (; ///int temp; //定义临时变量boolean swapped的do { swapped=false; for(intj=1; j arr.length; j ) (/比较左右大小if (arr [ j-1 ] arr [ j ] ) { temp=arr[j-1]; arr[j-1]=arr[j]; arr[j]=temp; swapped=true; }}while(swapped ); ///end=System.nanoTime (; System.out.println ('总时间: ' (结束-开始) '纳秒'); )改进2 )在改进1中,所有鼓泡都是自始至终的,但在每个鼓泡过程中,尾部元素都已经排序,并且可以设置一个标志,将发生最后更换的位置记录为下一个鼓泡的终点) start=System.nanoTime (; ///int temp; //定义临时变量boolean swapped的int lastChangedIndex=arr.length; int t=0; do { swapped=false; for(intj=1; j lastChangedIndex; j ) (/比较左右大小if (arr [ j-1 ] arr [ j ] ) { temp=arr[j-1]; arr[j-1]=arr[j]; arr[j]=temp; swapped=true; t=j; } } lastChangedIndex=t; (while ) swapped; ///end=System.nanoTime (; System.out.println ('总时间: ' (结束-开始) '纳秒'); }测试publicstaticvoidmain (string [ ] args (int [ ] arr=new int ) ) 5、4、3、2、1、6、7、8、9、10、11、12、13///bubblesort1(ARR; bubblesort2(ARR ); system.out.println(--------排序后------- ) ); 系统. out.println (arrays.tostring (arr ) ); }根据改进的应用情况,当数组满足一定条件时,可得到最佳结果

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。