C#四种简单排序

 1         int[] nums = { 9, 5, 3, 1, 6, 4, 7, 2, 0, 8 };
 2 
 3             #region 冒泡排序
 4             //for (int i = 0; i < nums.Length - 1; i++)
 5             //{
 6             //    for (int j = 0; j < nums.Length - 1 - i; j++)
 7             //    {
 8             //        if (nums[j] > nums[j + 1])
 9             //        {
10             //            int temp = nums[j];
11             //            nums[j] = nums[j + 1];
12             //            nums[j + 1] = temp;
13             //        }
14             //    }
15             //}
16 
17             //for (int i = 0; i < nums.Length - 1; i++)
18             //{
19             //    for (int j = 0; j < nums.Length - 1 - i; j++)
20             //    {
21             //        if (nums[j] < nums[j + 1])
22             //        {
23             //            var tmp = nums[j];
24             //            nums[j] = nums[j + 1];
25             //            nums[j + 1] = tmp;
26             //        }
27             //    }
28             //}
29             #endregion
30             #region 插入排序
31             //for (int i = 1; i < nums.Length; i++)
32             //{
33             //    int insertVal = nums[i];  //首先记住这个预备要插入的数
34             //    int insertIndex = i - 1; //找出它前一个数的下标(等下 准备插入的数 要跟这个数做比较)
35 
36             //    //如果这个条件满足,说明,我们还没有找到适当的位置
37             //    while (insertIndex >= 0 && insertVal < nums[insertIndex])   //这里小于是升序,大于是降序
38             //    {
39             //        nums[insertIndex + 1] = nums[insertIndex];   //同时把比插入数要大的数往后移
40             //        insertIndex--;      //指针继续往后移,等下插入的数也要跟这个指针指向的数做比较         
41             //    }
42             //    //插入(这时候给insertVal找到适当位置)
43             //    nums[insertIndex + 1] = insertVal;
44             //}
45             #endregion
46             #region 选择排序
47             //for (int i = 0; i < nums.Length - 1; i++)
48             //{
49             //    int min_index = i;  //list中最小值的索引
50             //    for (int j = i + 1; j < nums.Length; j++)
51             //    {
52             //        if (nums[j] < nums[min_index])
53             //        {
54             //            min_index = j;
55             //        }
56             //    }
57             //    int temp = nums[i];
58             //    nums[i] = nums[min_index];
59             //    nums[min_index] = temp;
60             //}
61             #endregion
62             #region 希尔排序
63             //希尔排序利用了插入排序的一个特点来优化排序算法,插入排序的这个特点就是:当数组基本有序的时候,插入排序的效率比较高。
64             int gap = nums.Length / 2;
65 
66             while (1 <= gap)
67             {
68                 // 把距离为 gap 的元素编为一个组,扫描所有组
69                 for (int i = gap; i < nums.Length; i++)
70                 {
71                     int j = 0;
72                     int temp = nums[i];
73 
74                     // 对距离为 gap 的元素组进行排序
75                     for (j = i - gap; j >= 0 && temp < nums[j]; j = j - gap)
76                     {
77                         nums[j + gap] = nums[j];
78                     }
79                     nums[j + gap] = temp;
80                 }
81                 gap = gap / 2; // 减小增量
82             }
83             #endregion
84 
85             //打印数组
86             for (int i = 0; i < nums.Length; i++)
87             {
88                 Console.WriteLine(nums[i]);
89             }    
原文地址:https://www.cnblogs.com/liangwenchao-912/p/14455482.html