快速排序

 1 #include<iostream>
 2 using namespace std;
 3 //快速排序
 4 void Quicksort(int a[], int low, int high)
 5 {
 6     if (low >= high)
 7         return;
 8     int first = low;
 9     int last = high;
10     int key = a[first];
11     while (first < last)
12     {
13         while (first < last&&a[last] >= key)
14         {
15             --last;
16         }
17         a[first] = a[last] ;
18         while (first < last&&a[first] <= key)
19         {
20             ++first;
21         }
22         a[last] = a[first];
23     }
24     a[first] = key;
25     Quicksort(a, low, first - 1);
26     Quicksort(a, first + 1, high);
27 }
28 int main()
29 {
30     int a[10];
31     for (int i = 0; i < 10; i++)
32         cin >> a[i];
33     for (auto t : a)
34         cout << t << " ";
35     cout << endl;
36     Quicksort(a, 0,9);// 快速排序
37     for (auto t : a)
38         cout << t << " ";
39     cout << endl;
40     system("pause");
41     return 0;
42 }
 1 #include<iostream>
 2 using namespace std;
 3 int partition(int data[], int length, int start, int end)
 4 {
 5     if (data == NULL || length <= 0 || start < 0 || end >= length)
 6         throw new exception("Invalid Parameters");
 7     int index = rand() % (end - start + 1) + start;
 8     
 9     swap(data[index], data[end]);
10     int small = start - 1;
11     
12     for (index = start; index < end; ++index)
13     {
14         if (data[index] < data[end])
15         {
16 
17             ++small;
18             if (small != index)
19             {
20                 swap(data[index], data[small]);
21             }
22         }
23     }
24     ++small;
25     swap(data[small], data[end]);
26     return small;
27 }
28 void quicksort(int data[], int length, int start, int end)
29 {
30     if (start == end)
31         return;
32     int index = partition(data, length, start, end);
33     if (index > start)
34         quicksort(data, length, start, index - 1);
35     if (index < end)
36         quicksort(data, length, index + 1, end);
37 }
38 int main()
39 {
40     int data[4] = { 2, 5, 2, 3 };
41     cout << partition(data, 4, 0, 3) << endl;
42     /*quicksort(data, 4, 0, 3);
43     for (int i = 0; i < 4; i++)
44         cout << data[i] << endl;*/
45     system("pause");
46     return 0;
47 }
原文地址:https://www.cnblogs.com/wujufengyun/p/6826222.html