七大排序之快排(重点 面试基本都会问)

2021-01-02 04:28

阅读:677

标签:strong   art   font   rand   不能   struct   key   while   分治法   

必须要明白的: 分治法+挖坑填数;

分治法:大问题分解成各个小问题,对小问题求解,使得大问题得以解决。

 

 1 #include 2 #include 3 #include 4 #include 5 using namespace std;
 6 
 7 const int Max = 10;
 8 
 9 void swap(int& a, int& b) {
10     int temp = a;
11     a = b;
12     b = temp;
13 }
14 
15 long getSystemTime() {
16     struct timeb tb;
17     ftime(&tb);
18     return tb.time * 1000 + tb.millitm;
19 }
20 void Print(const int* arr, int length) {
21     for (int i = 0; i ) {
22         cout " ";
23     }
24 }
25 void QuickSort(int* arr, int start, int end) {
26     int i = start;
27     int j = end;
28     //这里注意key不能为arr[0];
29     int key = arr[start];
30     if (i  j) {
31         while (i  j) {
32             while (i = key) {
33                 j--;
34             }
35             if (i  j) {
36                 arr[i] = arr[j];
37                 i++;
38             }
39             while (i  key)
40             {
41                 i++;
42             }
43             if (i  j) {
44                 arr[j] = arr[i];
45                 j--;
46             }
47         }
48         //下面三行代码不能放在if语句的外面
49         arr[i] = key;
50         QuickSort(arr, start, i - 1);
51         QuickSort(arr, i + 1, end);
52     }
53 
54 }
55 
56 int main() {
57     int arr[Max];
58     srand((unsigned)time(NULL));
59     for (int i = 0; i ) {
60         arr[i] = rand() % Max;
61     }
62     cout "排序前:\n";
63     Print(arr, Max);
64     long pt = getSystemTime();
65     QuickSort(arr, 0, Max - 1);
66     long at = getSystemTime();
67     cout "\n排序后:\n";
68     Print(arr, Max);
69 
70     cout "\ntime of sort:" "ms\n";
71 
72 
73     return 0;
74 }

 

七大排序之快排(重点 面试基本都会问)

标签:strong   art   font   rand   不能   struct   key   while   分治法   

原文地址:https://www.cnblogs.com/jibisheng/p/12994886.html


评论


亲,登录后才可以留言!