c语言 快速排序
问题引入:快速排序
第一行:输入n,表示要排序的的个数;
第二行:输入 n 个数;
输出:
排序后的数。
#include<stdio.h> int a[100],n; //定义全局变量,用于调用 void quickSort(int left, int right) { int t,tmp,i,j; if(left > right) //判断条件,不满足排序,返回空值 { return; } tmp = a[left]; //第一个基数 i = left; j = right; while(i != j) { while(a[j]>=tmp&&i<j) //从右端开始,循环,直达找到比tmp小的值 j--; while(a[i]<=tmp&&i<j) //左端开始,循环,直到找到比tmp大的值 i++; if(i<j) //满足条件,交换值 { t = a[i]; a[i] = a[j]; a[j] = t; } } a[left] = a[i]; //将基数归位 a[i] = tmp; quickSort(left,i-1); //左端排序 quickSort(i+1,right); //右端排序 } int main() { int i; scanf("%d",&n); for(i=1;i<n;i++) { scanf("%d",&a[i]); } quickSort(1,n); for(i=1;i<=n;i++) { printf("%d ",a[i]); } return 0; }
非学无以广才,非志无以成学。
正是因为今天的不完美,才对未来充满希望。
----长帆