qsort.h
来自「一本全面剖析C++数据结构算法的书籍」· C头文件 代码 · 共 47 行
H
47 行
// file qsort.h// quick sort#ifndef QuickSort_#define QuickSort_#include "swap.h"template<class T>void quickSort(T a[], int l, int r){// Sort a[l:r], a[r+1] has large value. if (l >= r) return; int i = l, // left-to-right cursor j = r + 1; // right-to-left cursor T pivot = a[l]; // swap elements >= pivot on left side // with elements <= pivot on right side while (true) { do {// find >= element on left side i = i + 1; } while (a[i] < pivot); do {// find <= element on right side j = j - 1; } while (a[j] > pivot); if (i >= j) break; // swap pair not found Swap(a[i], a[j]); } // place pivot a[l] = a[j]; a[j] = pivot; quickSort(a, l, j-1); // sort left segment quickSort(a, j+1, r); // sort right segment}template<class T>void QuickSort(T *a, int n){// Sort a[0:n-1] using quick sort. // Requires a[n] must have largest key. quickSort(a, 0, n-1);}#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?