常见排序算法整理(C++)

快速排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/******************************************************************************

Welcome to GDB Online.
GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl,
C#, OCaml, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog.
Code, Compile, Run and Debug online from anywhere in world.

*******************************************************************************/
#include <iostream>
#include <vector>
using namespace std;


// 左闭右闭区间
int getRand(int min, int max) {
return ( rand() % (max - min + 1) ) + min ;
}

void quickSort(vector<int>& nums, int start, int end)
{
if(start > end)
return;

int i = start, j = end;
int key = nums[start];

while(i < j)
{
while(i < j && nums[j] < key)
j--;
while(i < j && nums[i] >= key)
i++;

if(i<j)
{
swap(nums[i],nums[j]);
}
}

swap(nums[i], nums[start]);
quickSort(nums, start, i-1);
quickSort(nums, i+1, end);

}

void sort(vector<int> & nums)
{
if(nums.empty() || nums.size() < 2)
{
return;
}

quickSort(nums, 0, nums.size() - 1);
}

int main()
{
vector<int> nums;

for (int i = 0; i < 20; i++)
{
nums.push_back(std::move(getRand(0,100)));
}

sort(nums);

for (auto it : nums)
cout << it << endl;

return 0;
}

常见排序算法整理(C++)
https://hodlyounger.github.io/G_LeetCode/排序算法/
作者
mingming
发布于
2023年10月27日
许可协议