所谓快速排序就是将一组数据分成两堆,
初始的第一队只有一个元素,也就是第一个元素,这是有序队
另一队杂乱无章,就是无序队
将无序队中的每一个元素依次放入有序队,这样就可以将所有的数据排列好
代码中的关键处有说明,不懂可以留言
#include<stdio.h>
#define N 7
void sort(int a[]){
int j,k,temp;
for(j=1;j<=N;j++){
temp=a[j]; //先将无序数堆中的第一个放入一个变量当中
for(k=j-1;k>-1&&a[k]>temp;k--){
// 讲有序区的元素和无序区的第一个元素比较,然后插入
a[k+1]=a[k]; // 将元素后移
a[k]=temp; //整个过程中间可以发现当temp第一次赋值之后,这个值就一直在比较插入,直到有合适的位置可以放下
}
}
}
main(){
int i,j,a[N];
for(i=0;i<N;i++)
scanf("%d\n",&a[i]);
sort(a);
printf("--------------------------\n");
for(j=0;j<N;j++)
printf("%d\n",a[j]);
}
关注编程的本质,才能更好的写代码,更多算法会继续更新