1 #include"iostream"
 2 #include"random"
 3 using namespace std;
 4 
 5 /*
 6 void Swap(int &a,int &b)
 7 {
 8     int tmp;
 9     tmp=a;
10     a=b;
11     b=tmp;
12 }
13 */
14 //官方给的partition函数
15 int Partition1(int *data,int start,int end)
16 {
17     int index=start+(rand()%(end-start+1));
18     swap(data[index],data[end]);
19     int small=start-1;
20     for(index=start;index<end;index++)
21     {
22         if(data[index]<data[end])
23         {
24             small++;
25             if(index!=small)
26                 swap(data[index],data[small]);
27         }
28     }
29     small++;
30     swap(data[small],data[end]);
31     return small;
32 }
33 
34 //自定义Partition函数
35 int Partition2(int *data,int start,int end)
36 {
37     int value=data[start];
38     while(start<end)
39     {
40         while(start<end)
41         {
42             if(data[end]>value)
43                 end--;
44             else
45                 break;
46         }
47         if(start<end)
48             data[start++]=data[end];
49         while(start<end)
50         {
51             if(data[start]<=value)
52                 start++;
53             else
54                 break;
55         }
56         if(start<end)
57             data[end--]=data[start];
58     }
59     data[start]=value;
60     return start;
61 }
62 
63 void QuickSort1(int *data,int start,int end)
64 {
65     if(start==end) return;
66 
67     int mid=Partition1(data,start,end);
68     if(mid>start)
69         QuickSort1(data,start,mid-1);
70     if(mid<end)
71         QuickSort1(data,mid+1,end);
72 }
73 
74 void QuickSort2(int *data,int start,int end)
75 {
76     if(start==end) return;
77 
78     int mid=Partition2(data,start,end);
79     if(mid>start)
80         QuickSort2(data,start,mid-1);
81     if(mid<end)
82         QuickSort2(data,mid+1,end);
83 }
QuickSort.h

相关文章:

  • 2021-11-03
  • 2021-09-20
  • 2021-07-09
  • 2021-12-13
  • 2022-02-26
  • 2021-09-06
  • 2021-12-23
  • 2021-09-20
猜你喜欢
  • 2022-12-23
  • 2021-09-29
  • 2021-05-22
  • 2021-05-10
  • 2021-07-23
  • 2021-09-13
相关资源
相似解决方案