#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 7
void swap(int *pa, int *pb)
{
int temp = 0;
temp = *pb;
*pb = *pa;
*pa = temp;
}
//快速排序的经典算法
int findpos(int *table_num, int length)
{
int low = 0;
int high = length-1;
int temp = table_num[0];
while(low < high)
{
while(low<high && temp<table_num[high]) high--;
swap(&table_num[low], &table_num[high]);
while(low<high && temp>table_num[low]) low++;
swap(&table_num[low], &table_num[high]);
}
table_num[low] = temp;
return low;
}
//递归实现
void speed_order(int *table_num, int length)
{
int pos = 0;
int low = 0, high = length-1;
if(low<high)
{
pos = findpos(table_num, length);
speed_order(table_num, pos+1);
speed_order(table_num+pos+1, length-pos-1);
}
}
//输出
void traverse_array(int *table_num, int length)
{
int i = 0;
for(i=0; i<length; i++)
{
printf("Input %d: %d\n", i, table_num[i]);
}
}
//输入
void input_array(int *table_num, int length)
{
int i = 0;
memset(table_num, 0, length);
for(i=0; i<length; i++)
{
printf("Input %d: \n", i);
scanf("%d", &table_num[i]);
}
}
int main()
{
int table_num[SIZE];
memset(table_num, 0, sizeof(table_num)/sizeof(int));
input_array(table_num, sizeof(table_num)/sizeof(int)); //输入
speed_order(table_num, sizeof(table_num)/sizeof(int)); //快速排序
traverse_array(table_num, sizeof(table_num)/sizeof(int)); //遍历
return 0;
}