首页 > 代码库 > 快速排序
快速排序
#include <stdio.h>#include <stdlib.h>#include <string.h>void quick_sort(int data[], int, int);int partition(int data[], int, int);int main( int argc, char* argv[] ) { int data[8] = {2, 8, 7, 1, 3, 5, 6, 4}; quick_sort(data, 0, 7); for (int i = 0; i < 8; i++) { printf("%d ", data[i]); } system("pause"); return 0;}void quick_sort(int data[], int low, int high){ if (low < high) { int p = partition(data, low, high); quick_sort(data, low, p - 1); quick_sort(data, p + 1, high); }}int partition(int data[], int low, int high){ int i, j; int r, temp; r = data[high];//此处不可以使用data[low]。 i = low - 1; for (j = low ; j < high; j++) { if (data[j] <= r) //此处使用“<=”,而不是“<”。其实,两种用法都对,但是推荐使用“<=”。 { i++; temp = data[i]; data[i] = data[j]; data[j] = temp; } } temp = data[high]; data[high] = data[i + 1]; data[i + 1] = temp; return i + 1;}
快速排序不是稳定的排序算法!例如,2, 3, 6, 61, 5, 4.使用上述算法后,结果是2, 3, 4, 5, 61, 6.
快速排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。