首页 > 代码库 > linux C 快速排序法
linux C 快速排序法
#include <stdio.h>// 数组长度#define LENGTH(array) ( (sizeof(array)) / (sizeof(array[0])) )/* * 快速排序 * * 参数说明: * a -- 待排序的数组 * l -- 数组的左边界(例如,从起始位置开始排序,则l=0) * r -- 数组的右边界(例如,排序截至到数组末尾,则r=a.length-1) */void quick_sort(int a[], int l, int r){ if (l < r) { int i,j,x; i = l; j = r; x = a[i]; while (i < j) { while(i < j && a[j] > x) j--; // 从右向左找第一个小于x的数 if(i < j){ //a[i++] = a[j]; a[i] = a[j]; i++; } while(i < j && a[i] < x) i++; // 从左向右找第一个大于x的数 if(i < j){ a[j] = a[i]; j--; } } a[i] = x; quick_sort(a, l, i-1); /* 递归调用 */ quick_sort(a, i+1, r); /* 递归调用 */ }}void main(){ int i; int a[] = {30,40,60,10,20,50}; int ilen = LENGTH(a); printf("before sort:"); for (i=0; i<ilen; i++) printf("%d ", a[i]); printf("\n"); quick_sort(a, 0, ilen-1); printf("after sort:"); for (i=0; i<ilen; i++) printf("%d ", a[i]); printf("\n");}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。