首页 > 编程语言 > 详细

冒泡排序和插入排序

时间:2018-11-29 00:25:43      阅读:174      评论:0      收藏:0      [点我收藏+]

 

冒泡排序:

 1     public static void bubblesort(int[] a, int n) {        
 2         for(int i = 0; i < n; ++i) {
 3             boolean flag = false;
 4             for(int j = 0; j < n-i-1; ++j) {
 5                 if(a[j] > a[j+1]) {
 6                     int temp = a[j+1];
 7                     a[j+1] = a[j];
 8                     a[j] = temp;
 9                     flag = true;
10                 }            
11             }
12             if(flag == false) break;
13         }
14     }

插入排序:

 1     public static void insertionsort(int[] a,int n) {
 2         for(int i = 1; i < n; ++i) {
 3             int temp = a[i];
 4             int j = i - 1;
 5             for(; j >= 0; --j ) {
 6                 if(a[j] > temp) {
 7                     a[j+1] = a[j];
 8                 }else {break;}
 9                 }
10                 a[j+1] = temp;    
11             }
12         }        

执行效果

冒泡排序花费时间:196ms
选择排序花费时间:54ms

我的代码:

 1     public static void insertionsort(int[] a,int n) {
 2         for(int i = 1; i < n; i++) {
 3             int temp = a[i];
 4             for(int j = i; j > 0; j-- ) {
 5                 if(a[j-1] > temp) {
 6                     a[j] = a[j-1];
 7                 }else {break;}
 8                 a[j-1] = temp;    
 9                 }
10             }
11         }        

优化:  

  1、for 循环中 i++ 和 ++i 运行效果一样,但 ++i 效率更高。https://blog.csdn.net/github_37847975/article/details/77369851

  2、第8行赋值放在了第二层循环中,这样每次比较都要给 a[j-1] 赋值,增加了计算量。 

 

冒泡排序和插入排序

原文:https://www.cnblogs.com/cxc1357/p/10035852.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!