啊哈算法-快速排序
快速排序:不断地通过基准数将数值进行左右分区交换排序,直到剩下一个数时返回;
好久没写了,复习一下。
#include<stdio.h> void sort(int *a,int l,int r);//快排 int main(){ int a[10],tem; for(int i=0;i<5;i++) scanf("%d",&a[i]); sort(a,0,4); for(int i=0;i<5;i++) printf("%d ",a[i]); } void sort(int *a,int l,int r){ int right=r,left=l;//right和left存左右端点 if(l>=r) return ; else{ int tem=a[l]; while(l<r){ while(r>l && a[r]>=tem) r--; a[l]=a[r];//找到右边小于tem的数填入 while(r>l && a[l]<=tem) l++; a[r]=a[l];//找到左边大于tem的数填入 } a[l]=tem; sort(a,left,l-1); sort(a,l+1,right); } }