標籤:mystra 編程演算法 快速排序 代碼 c
快速排序演算法 代碼(C)
本文地址: http://blog.csdn.net/caroline_wendy
經典的快速排序演算法, 作為一個編程者, 任何時候都要完整的手寫.
代碼:
/* * main.cpp * * Created on: 2014.6.12 * Author: Spike *//*eclipse cdt, gcc 4.8.1*/#include <stdio.h>#include <stdlib.h>int RandomInRange(int min, int max){ int random = rand() % (max - min + 1) + min; return random;}void Swap(int* num1, int* num2){ int temp = *num1; *num1 = *num2; *num2 = temp;}int Partition(int data[], int length, int start, int end){ if(data == NULL || length <= 0 || start < 0 || end >= length) { return -1; } int index = RandomInRange(start, end); Swap(&data[index], &data[end]); int small = start - 1; for(index = start; index < end; ++ index) { if(data[index] < data[end]) { ++ small; if(small != index) Swap(&data[index], &data[small]); } } ++ small; Swap(&data[small], &data[end]); return small;}void QuickSort (int data[], int length, int start, int end) {if (start == end) return;int index = Partition(data, length, start, end);if (index > start)QuickSort(data, length, start, index-1);if (index < end)QuickSort(data, length, index+1, end);}int main(void){ int str[] = {49, 38, 65, 97, 76, 13, 27, 49}; QuickSort(str, 8, 0, 7); for (int i : str) { printf("%d ", i); } printf("\n"); return 0;}
輸出:
13 27 38 49 49 65 76 97