2、写一个函数,可对任意个整数进行起泡排序(升序,降序可选)

 

可以参考以下冒泡排序的代码


void BubbleSort(int arr1[] , int Array_length1)
{
	int i = 0;
	int j = 0;
	for (i = 0; i < Array_length1 - 1 ; i++ )   //n个元素,最多进行n - 1次排序 
	{
		int mark = 0;
		for (j = 0; j < Array_length1 - 1 - i; j++) //n个元素,每次进行 n - 1 - i次交换
		{
			int temp = 0;						
			if (arr1[j] > arr1[j + 1])
			{
				temp = arr1[j];
				arr1[j] = arr1[j + 1];
				arr1[j + 1] = temp;
				mark = 1;		// 如果进行数据交换了,说明本次是无序的,就将mark设置为1
			}
		}
		if (!mark)	//取非
			return;	 // 元素没有交换,则本次开始冒泡时,数据已经有序了
}

 

代码如下,如有帮助,请采纳一下,谢谢。

#include <stdio.h>
void sort(int arr[],int n,int s)
{
	int i,j,tmp;
	for (i = 0; i < n-1;i++ )
	{
		for (j = 0; j < n-1-i;j++)
		{
			if (s ==1) //升序
			{
				if (arr[j] > arr[j+1])
				{
					tmp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = tmp;
				}
			}else if (s == 2) //降序
			{
				if (arr[j] < arr[j+1])
				{
					tmp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = tmp;
				}
			}
		}
	}
}

int main()
{
	int i = 0;
	int arr[] = {2,5,1,9,7,3,8};
	printf("排序前:");
	for (i = 0; i < 7;i++)
		printf("%d ",arr[i]);
	printf("\n升序排序后:");
	sort(arr,7,1);
	for (i = 0; i < 7;i++)
		printf("%d ",arr[i]);
	printf("\n降序排序后:");
	sort(arr,7,2);
	for (i = 0; i < 7;i++)
		printf("%d ",arr[i]);
	return 0;
}