#include <iostream> using namespace std; template <class T> void Swap( T& lhs, T& rhs) { T temp; temp = lhs; lhs = rhs; rhs = temp; } template <class T> void BubbleSort(T* array, int len) { //从小到大 for (int i= len -1; i > 0; i--) { for (int j = 0; j < i; j++) { if (array[j] > array[j + 1]) { Swap(array[j], array[j + 1]); } } } } template <class T> void SelectSort(T* array, int len) { int pos = -1; for (int i = 0; i < len - 1; i++) { pos = i; for (int j = i + 1; j < len; j++) { if (array[pos] > array[j]) { pos = j; } } if (pos != i) { Swap(array[i],array[pos]); } } } template <class T> void InsertSort(T* array, int len) { for (int i = 0; i< len; i++) { int temp = array[i]; int j = i - 1; while( j >=0 && array[j] > temp) { array[j + 1] = array[j]; j--; } array[j+1] = temp; } } template <class T> void Show(const T* array, const T* end) { while(array != end) { cout << *(array++) << " "; } cout << endl; } template <class T> void qsort(T* array, int left, int right) { if (left >= right) { return; } Swap(array[left], array[(left + right) /2]); int last = left; for (int j = left + 1; j < right; j++) { if (array[j] <= array[left]) { Swap(array[++last], array[j]); } } Swap(array[left], array[last]); qsort(array, left, last); qsort(array, last + 1, right); } #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) int main(int argc, char argvp[]) { int a[10] = {11,9,10,4,6,5,3,5,7,8}; double d[6] = {6.67,4.34,2323,23423.23,54.234}; qsort(a,0,ARRAY_SIZE(a)); Show(a, a + 10); return 0; }