标签:
下标
|
0
|
1
|
2
|
3
|
4
|
5
|
数据
|
6
|
2
|
7
|
3
|
8
|
9
|
下标
|
0
|
1
|
2
|
3 |
4
|
5
|
数据
|
3
|
2
|
7
|
6
|
8
|
9
|
下标
|
0
|
1
|
2
|
3
|
4
|
5
|
数据
|
3
|
2
|
6
|
7
|
8
|
9
|
下标
|
0
|
1
|
2
|
3
|
4
|
5
|
数据
|
3
|
2
|
6
|
7
|
8
|
9
|
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 namespace test 6 { 7 class QuickSort 8 { 9 static void Main(string[] args) 10 { 11 int[] array = { 49, 38, 65, 97, 76, 13, 27 }; 12 sort(array, 0, array.Length - 1); 13 Console.ReadLine(); 14 } 15 /**一次排序单元,完成此方法,key左边都比key小,key右边都比key大。 16 17 18 **@param array排序数组 19 20 21 **@param low排序起始位置 22 23 24 **@param high排序结束位置 25 26 27 **@return单元排序后的数组 */ 28 private static int sortUnit(int[] array, int low, int high) 29 { 30 int key = array[low]; 31 while (low < high) 32 { 33 /*从后向前搜索比key小的值*/ 34 while (array[high] >= key && high > low) 35 --high; 36 /*比key小的放左边*/ 37 array[low] = array[high]; 38 /*从前向后搜索比key大的值,比key大的放右边*/ 39 while (array[low] <= key && high > low) 40 ++low; 41 /*比key大的放右边*/ 42 array[high] = array[low]; 43 } 44 /*左边都比key小,右边都比key大。//将key放在游标当前位置。//此时low等于high */ 45 array[low] = key; 46 foreach (int i in array) 47 { 48 Console.Write("{0}\t", i); 49 } 50 Console.WriteLine(); 51 return high; 52 } 53 /**快速排序 54 *@paramarry 55 *@return */ 56 public static void sort(int[] array, int low, int high) 57 { 58 if (low >= high) 59 return; 60 /*完成一次单元排序*/ 61 int index = sortUnit(array, low, high); 62 /*对左边单元进行排序*/ 63 sort(array, low, index - 1); 64 /*对右边单元进行排序*/ 65 sort(array, index + 1, high); 66 } 67 } 68 }
标签:
原文地址:http://www.cnblogs.com/hghrpg/p/4590445.html