关于这种稳定的快排的思路,请看我之前的这篇文章:
《对数器&Python实现稳定快排》
下面是实现代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int split(char* str, int dataList[20], const char* separator)
{
int n=0;
char* ret;
ret = strtok(str,separator);
while(ret!=NULL)
{
dataList[n++] = atoi(ret);
ret = strtok(NULL, separator);
}
return n;
}
void quicklySort(int num, int* array)
{
if(num==1||num==0){}
else if(num==2){
if(array[1]<array[0])
{
array[0] = array[0]+array[1];
array[1] = array[0]-array[1];
array[0] = array[0]-array[1];
}
}
else if(num>2)
{
int flag=array[0],count=0;
for(int i=1; i<num; i++)
{
if(array[i] < flag)
{
int temp_1;
temp_1 = array[i];
array[i] = array[count+1];
array[count+1] = temp_1;
count++;
}
if(array[i] >= flag){}
}
int temp_2;
temp_2 = array[count];
array[count] = array[0];
array[0] = temp_2;
quicklySort(count, array);
quicklySort(num-1-count, &array[count+1]);
}
}
int main()
{
int num, array[20];
char data[100];
const char* separator = " ";
printf("input number list separated by spaces:");
gets(data);
num = split(data, array, separator);
//对array[]进行快速排序,本文采用的是具有稳定性的改进快排
quicklySort(num,array);
for(int i=0; i<num; i++)
{
printf("%d ",array[i]);
}
return 0;
}
运行效果:
分享就到这里,感谢观看。
“写程序,不比其它的学科,动手才是硬道理。” ——绝影Hamber