快速排序

xiaoxiao2021-02-28  108

#include <iostream> using namespace std; int a[5] = { 1, 4, 2, 5, 3 }; void quickSort(int left, int right) { if (left>right) { return; } int temp = a[left]; int i = left; int j = right; while (i != j) { //顺序很重要,要从右到左找 while (a[j] >= temp && i<j) j--; //再从左往右找 while (a[i] <= temp && i<j) i++; //交换两个数在数组中的位置 if (i<j)//当哨兵i和哨兵j没有相遇时 { int t = a[i]; a[i] = a[j]; a[j] = t; } } //最终将基准数归位 a[left] = a[i]; a[i] = temp; quickSort(left, i - 1);//继续处理左边的,这里是一个递归的过程 quickSort(i + 1, right);//继续处理右边的,这里是一个递归的过程 } int main() { quickSort(0, 4); for (int i = 0; i < 5; i++) { cout << a[i] << " "; } return 0; }
转载请注明原文地址: https://www.6miu.com/read-30263.html

最新回复(0)