常見的几种排序方式

內容:

    1、冒泡排序

    2、选择排序

    3、插入排序

    4、希尔排序

 一、冒泡排序

   冒泡排序思想:每遍历数组一次将数组中剩下的最大的排到本次遍历数组的最后。

   1.每次遍历均是从数组的第一个元素开始的

   2.两层for循环,第一层用来控制遍历的次数,为陈列的长度-1;第二层用来找到本次循环中元素的最大值,并将其排到本次数组的最后。

  示例代码:

 1 public int[] maopaoSort(int[] arr)
 2         {
 3             if (arr.Length == 0)
 4             {
 5                 Console.WriteLine("空數組");
 6             }
 7             else
 8             {
 9                 for (int i = 0; i < arr.Length - 1; i++)
10                 {
11                     for (int j = 0; j < arr.Length - 1 - i; j++)
12                     {
13                         if (arr[j] > arr[j + 1])
14                         {
15                             int temp = arr[j];
16                             arr[j] = arr[j + 1];
17                             arr[j + 1] = temp;
18                         }
19                     }
20                 }
21             }
22             return arr;
23         }
冒泡排序

二、选择排序

   选择排序思想:每次遍历数组将剩余数组中的最小值排到本次遍历陈列的最前面

   1.两层for循环,第一层用于控制循环的次数,第二层循环用于找到本次循环中的最小值,并将其排到本次循环体的最前面

  示例代码:

 1 public int[] xuanzeSort(int[] arr)
 2         {
 3             if (arr.Length == 0)
 4             {
 5                 Console.WriteLine("空數組");
 6             }
 7             else
 8             {
 9                 for (int i = 0; i < arr.Length; i++)
10                 {
11                     for (int j = i + 1; j < arr.Length; j++)
12                     {
13                         int temp;
14                         //不斷的將最小的送到arr[i]的面前,直到迴圈結束
15                         if (arr[i] > arr[j])
16                         {
17                             temp = arr[i];
18                             arr[i] = arr[j];
19                             arr[j] = temp;
20                         }
21                     }
22                 }
23             }
24             return arr;
25         }
选择排序

三、插入排序

   插入排序思想:假设陈列中前n-1个都排好序了,现在将数组中的第几个放到前面已排好序的数组中使得这n个数任然是一个排好序的数组。

   1.有一个for循环,先将数组中的前两个数排序,然后再将前三个数排序,

   2.每次都是从后向前排序,直到找到合适的位置

示例代码:

 1 public int[] charuSort(int[] arr) {
 2             if (arr.Length == 0)
 3             {
 4                 Console.WriteLine("空數組");
 5             }
 6             else {
 7                 for (int i = 0; i < arr.Length; i++)
 8                 {
 9                     int temp;
10                     int j = i;
11                     while (j>0 && arr[j-1]>arr[j])
12                     {
13                         temp=arr[j];
14                         arr[j] = arr[j - 1];
15                         arr[j - 1] = temp;
16                         --j;
17                     }
18                 }
19             }
20             return arr;
21         }
选择排序

四、希尔排序
   希尔排序思想:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。

   1.先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直到所取的增量dt=1

示例代码:  

 1 public int[] shellSort(int[] arr) {
 2             int k = arr.Length / 2;  //設置步長
 3             while (k>0)
 4             {
 5                 for (int i = k; i < arr.Length; i++)
 6                 {
 7                     int t = arr[i];
 8                     int j = i - k;
 9                     while (j>=0 && t<arr[j])
10                     {
11                         arr[j + k] = arr[j];
12                         j = j - k;
13                     }
14                     arr[j + k] = t;
15                 }
16                 k /= 2;
17             }
18             return arr;
19         }
希尔排序

参考资料:http://www.cnblogs.com/WangJinYang/p/3553792.html

相关推荐