C#面試題:快速排序法
阿新 • • 發佈:2018-12-26
快速排序法:找到一個基準點key,和left,right,比較,比key小的值放到key的坐邊,比key大的值,放到key的右邊。
採用遞迴方式,重複執行判斷,直到排序完成。
//快速排序法法
- //排序找出基準點。
- private static int SortID (int[] arr, int left, int right)
- {
- int key = arr [left];
- while (left < right) {
- while (arr [right] >= key && right > left) {//比key小放左邊
- right--;
- }
- arr [left] = arr [right];
- while (arr [left] <= key && left < right) {//比key大放右邊
- left++;
- }
- arr [right] = arr [left];
- }
- arr [left] = key;
- foreach (var i in arr) {
- Console.Write (i + " ");
- }
- Console.WriteLine ();
- return left;
- }
- private static void Sort (int[] arr, int left, int right)
- {
- if (left < right) {
- int i = SortID (arr, left, right);//基準點
- Sort (arr, left, i - 1);//左區間
- Sort (arr, i + 1, right);//右區間
- }
- }