冒泡排序和鸡尾酒排序

冒泡排序和鸡尾酒排序

好久不见

度过了清明假期,又开始盼望五一假期,祝各位程序员假期愉快,主要保养身体奥

冒泡排序

提起排序算法,就不得不提冒泡排序,可以说是入门排序算法了,很久没有写过冒泡排序,借此机会和大家一同温习温习

冒泡排序,顾名思义,就是像个气泡往出冒,冒泡排序,首先一个数组,int arr[2,5,1,9,4,7];相邻两两进行比较,
数值大如果前一个数比后一个数大,则进行交换位置,反之不变, 所以经过一个循环,数值最大的数放在数组的末尾,而下一轮循环,就循环末尾数值少一个次数,如上数组,第一次循环完成 int arr1[2,1,5,4,7,9];下一次循环9就不参与循环。就是冒泡排序。

public static void BubbleSort(int [] arr){
 int temp;//临时变量
 for(int i=0; i<arr.length-1; i++){   //表示趟数,一共arr.length-1次。
     for(int j=arr.length-1; j>i; j--){

         if(arr[j] < arr[j-1]){
             temp = arr[j];
             arr[j] = arr[j-1];
             arr[j-1] = temp;
         }
     }
 }

}
平均时间复杂度O(n2)

当然,并不是因为这个冒泡排序才写这篇博…

鸡尾酒排序

算法原理:数组中的数字本是无规律的排放,先找到最小的数字,把他放到第一位,然后找到最大的数字放到最后一位。然后再找到第二小的数字放到第二位,再找到第二大的数字放到倒数第二位。以此类推,直到完成排序。

相当于变形的冒泡排序

29         static List<int> CockTailSort(List<int> list)
30         {
31             //因为是双向比较,所以比较次数为原来数组的1/2次即可。
32             for (int i = 1; i <= list.Count / 2; i++)
33             {
34                 //从前到后的排序 (升序)
35                 for (int m = i - 1; m <= list.Count - i; m++)
36                 {
37                     //如果前面大于后面,则进行交换
38                     if (m + 1 < list.Count && list[m] > list[m + 1])
39                     {
40                         var temp = list[m];
41 
42                         list[m] = list[m + 1];
43 
44                         list[m + 1] = temp;
45                     }
46                 }
47 
48                 Console.WriteLine("正向排序 => {0}", string.Join(",", list));
49 
50                 //从后到前的排序(降序)
51                 for (int n = list.Count - i - 1; n >= i; n--)
52                 {
53                     //如果前面大于后面,则进行交换
54                     if (n > 0 && list[n - 1] > list[n])
55                     {
56                         var temp = list[n];
57 
58                         list[n] = list[n - 1];
59 
60                         list[n - 1] = temp;
61                     }
62                 }
63 
64                 Console.WriteLine("反向排序 => {0}", string.Join(",", list));
65             }
66 
67             return list;
68         }
69     }
70 }

猜你喜欢

转载自blog.csdn.net/Smart_home/article/details/89150780