经典的快速排序算法, 作为一个编程者, 任何时候都要完整的手写.
代码:
/* * 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
更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索int
, index
, data
, quicksort
, start
, end
, length
, c语言排序算法
, C语言快速排序
语言排序算法
c语言快速排序算法、快速排序c语言实现、java实现快速排序算法、快速排序算法实现代码、实现快速排序算法,以便于您获取更多的相关知识。
时间: 2024-08-30 23:22:55