java-数组排序--冒泡排序、鸡尾酒排序、地精排序

冒泡排序

冒泡排序的思想是,让依次数组中相邻的数进行比较,如果前一个数比后一个数大,则两数进行交换,大的数就会象泡泡一样慢慢浮在水面上了

见图解

稳定性:稳定
时间复杂度:O(n2)

 1     public static void bubbleSort(int[] arr) {
 2         
 3         for (int i = 0; i < arr.length; i++) {
 4             for (int j = 0; j < arr.length-1-i; j++) {
 5                 if(arr[j]>arr[j+1]) {
 6                     int t=arr[j];
 7                     arr[j]=arr[j+1];
 8                     arr[j+1]=t;
 9                 }
10             }
11         }
12         
13     }

动态图解

 

 

鸡尾酒排序

鸡尾酒排序是冒泡排序的改进,当算法将一个最大数冒泡到列尾时,再从列尾开始将最小值冒泡到列首

见图解

稳定性:稳定

时间复杂度:O(n2)

 1     public static void coktailSort(int[] arr) {
 2         
 3         for (int i = 0; i < arr.length/2; i++) {
 4             for (int j = i; j < arr.length-1-i; j++) {
 5                 if(arr[j]>arr[j+1]) {
 6                     int t=arr[j];
 7                     arr[j]=arr[j+1];
 8                     arr[j+1]=t;
 9                 }
10             }
11             for (int j = arr.length-(1+1)-i; j >i; j--) {
12                 if(arr[j]<arr[j-1]) {
13                     int t=arr[j];
14                     arr[j]=arr[j-1];
15                     arr[j-1]=t;
16                 }
17             }
18         }
19         
20     }

动态图解

 

地精排序

地精排序,传说有一个地精在排列一排花盘。他从前至后的排列,如果相邻的两个花盘顺序正确,他向前一步;如果花盘顺序错误,他后退一步,直到所有的花盘的顺序都排列好。(地精排序思路与插入排序和冒泡排序很像, 主要其对代码进行了极简化)

稳定性:稳定

时间复杂度:O(n2

 1     public static void gnomeSort(int[] arr) {
 2 
 3         int i=1;
 4         while(i<arr.length) {
 5 
 6             if(i==0||arr[i]>=arr[i-1]) {
 7                 i++;
 8             }else {
 9                 int t=arr[i];
10                 arr[i]=arr[i-1];
11                 arr[i-1]=t;
12                 i--;
13             }
14 
15         }
16 
17     }

 

 

 


如果有地方写的错误,或者有什么疑问与建议,欢迎大家提出来 愿与大家一同进步

posted @ 2018-12-25 14:01  正月初六  阅读(491)  评论(0编辑  收藏  举报