可以参考以下冒泡排序的代码
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;
}