I modify other's sample as below.
#include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <time.h> void quickSortEx(int[], int, bool, int, int); void swap(int &x, int &y); int _tmain(int argc, _TCHAR* argv[]) { srand(time(NULL)); const int count = 10; int number[count] = {0}; printf("Before: "); int i; for(i = 0; i < count; i++) { number[i] = rand() % 100; printf("%d ", number[i]); } printf("\n"); quickSortEx(number, count, false, 0, count-1); printf("Afer: "); for(i = 0; i < count; i++) printf("%d ", number[i]); printf("\n"); return 0; } void quickSortEx(int number[], int count, bool desc, int left, int right) { if(left < right) { int i = left; int j = right + 1; while(1) { // To find the item should sort after 'left' while(i + 1 < count && (desc ? number[left] < number[++i] : number[++i] < number[left])); // To find the item should sort before 'left' while(j -1 > -1 && (desc ? number[left] > number[--j] : number[--j] > number[left])) ; if(i >= j) break; swap(number[i], number[j]); } swap(number[left], number[j]); quickSortEx(number, count, desc, left, j-1); quickSortEx(number, count, desc, j+1, right); } } void swap(int &x, int &y) { int temp; temp = x; x = y; y = temp; }
Reference:
http://caterpillar.onlyfun.net/Gossip/AlgorithmGossip/QuickSort1.htm
http://emn178.pixnet.net/blog/post/88613503-%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F%E6%B3%95(quick-sort)
沒有留言:
張貼留言