输入几个整数,由小到大输出

要求能正确执行——

(1)输入:1,5,0,3,6

         输出:0,1,3,5,6

(2)输入:18,38,23,456,1,35,97,23

         输出:1,18,23,23,3538,97,456

#include <stdio.h>
#include <string.h>


void quicksort(int arr[], int _left, int _right)
{

	int left = _left;
	int right = _right;
	int temp = 0;

	if(left <= right)
	{
		temp = arr[left];  //找出基准元素

		while(right != left)
		{
			while(right > left && arr[right] >= temp)
			{
				right--;
			}
			arr[left] = arr[right];  //从右向左找出第一个小于基准元素的值

			while(left < right && arr[left] <= temp)
			{
				left++;
			}
			arr[right] = arr[left];  //从左向右找出第一个大于基准元素的值
		}

		arr[left] = temp;

		quicksort(arr, _left, left-1);  //把基准元素之前的元素重新排列
    	quicksort(arr, right+1, _right);  //把基准元素之后的元素重新排列
	}


}

void str_to_int(char a[], int len)
{
	int i = 0, j = 0, sum = 0, flag = 0;
	char *p = NULL;
	int array_a[128] = {0};
	int len_array_a = 0;
	for(i = 0;i < len;i++)
	{
		p = &a[i];
		if(*p >= '0' && *p <= '9')//统计整数
		{
			sum = sum*10 + (*p - '0');
			flag = 1;
		}

		if(*p < '0' || *p > '9')//把整数存入数组
		{
			if(flag == 1)
			{
				array_a[j] = sum;
				j++;
			}

			sum = 0;
			flag = 0;
		}

		if(*p >= '0' && *p <= '9' && i == len - 1)
		{
			array_a[j] = sum;
			j++;
		}

		len_array_a = j;//统计数组的元素个数
	}

	quicksort(array_a, 0, len_array_a - 1);

	for(i = 0;i < len_array_a; i++)
	{
		printf("%d  ",array_a[i]);
	}
}

int main()
{
	char ch[128];
	gets(ch);
	str_to_int(ch,strlen(ch));
}

猜你喜欢

转载自blog.csdn.net/qq_29391293/article/details/82586562
今日推荐