Java数据结构之排序

1、冒泡排序:时间复杂度为O(n2)

假设是由小到大排序:相邻两个数之间进行比较,较大的数在后面。一次比较过后最大的数排在最后面

如:40、8、15、18、12一次排序后为:8、15、18、12、40依次排好直到由小到大拍好

 

for(int i = 0;i < n-i; i++){
   for(int j = 0;j < n-1-i;j++){      //最后几位已经排好的就不需要再排序了
       if(a[j] > a[j+1]){
           k= a[j];
           a[j] = a[j+1];
           a[j+1] = k;
       } 
   }  
}

2、选择排序:时间复杂度为O(n2)

假设是由小到大的排序:每次选出排序一次中最小的数放在第一位

如:3、4、1、5、2一次排序后为:1、4、3、5、2

 

for(int i=0;i<n-1;i++){
    for(int j=i+1;j<n;j++){
        if(a[i]>a[j]){
           k= a[i];
           a[i] = a[j];
           a[j] = k;
        }
    }
}    

 3、插入排序:

假设是由小到大的排序:每次排序某个数与之前的数进行比较,若小于则插在其前直到大于前面的数

for(int i =1;i < n; i++){
    int j = i-1;
    int k = a[i];
    while(a[i] < a[j]&&j >= 0){
         a[j+1] = a[j];
j--; } a[j]
= k; }

 

posted @ 2016-08-17 21:48  珍真小心  阅读(775)  评论(0编辑  收藏  举报