0%

Sorting Algorithm

根据时间复杂度的不同,大致分为3类:

  1. 时间复杂度O(n^2)的排序算法: 冒泡,选择,插入,希尔排序
  2. 时间复杂度O(nlogn)的排序算法: 快速,归并,堆排序
  3. 时间复杂度为线性的排序算法: 计数,桶排序,基数排序

快速排序(Quicksort)

c++:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void quicksort(vector<int> &nums, int l ,int r) {
if (l + 1 >= r) {
return;
}
int first = l, last = r - 1, key = nums[first];
while (fisrt < last) {
while (fist < last && nums[last] >= key) {
--last;
}
nums[first] = nums[last];
while (fist < last && nums[first] <= key) {
++first;
}
nums[last] = nums[first];
}
nums[first] = key;
quicksort(nums, l, first);
quicksort(nums, first + 1, r);
}

java:

1
@houwanwan