C语言实现稳定的快排

关于这种稳定的快排的思路,请看我之前的这篇文章:
《对数器&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
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值