快速排序是一种交换排序,是对冒泡排序的改进
利用冒泡排序的特性,对目标进行分段冒泡
#include "stdio.h"
int a[6];//定义一个数组,长度为6,实际存放5个元素,
/**
* 快速排序函数
* @param left 最左边的指针
* @param right 最右边的指针
*/
void QuickSort(int left,int right){
int i,j,t,temp;
//如果左指针在右指针的右边,说明这趟快排结束
if(left>right){
return;
}
//最右边的元素作为枢纽
temp = a[left];
//取出left和right的下标给i,j
i = left;j = right;
/**
* 主要循环
*/
while(i!=j)
{
//移动左指针,一直找到a[j]<=temp
while(i<j && a[j]>=temp){
j--;
}
//移动右指针,一直找到a[i]>=temp
while(i<j && a[i]<= temp){
i++;
}
//交换这两个找到的元素,让他们符合 比枢纽大的在数组右边,比枢纽小的在数组左边 的原则
if(i<j){
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
//把a[i]作为最左边的指针
a[left] = a[i];
//把a[i]作为枢纽元素
a[i] = temp;
//快排左边的序列
QuickSort(left,i-1);
//快排右边的序列
QuickSort(i+i,right);
}
int main( )
{
int i,j;
for(i = 1;i<=5 ;i++)
{
scanf("%d",&a[i]);
}
QuickSort(1,5);
for (j = 1; j<=5 ; j++) {
printf("%d ",a[j]);
}
return 0;
}