升序排序方法:冒泡排序法
1、输入n个数。
2、在未排序的n个数中,相邻元素依次比较,数大后移,排序后最大数移到最末尾(第n项)。
3、在未排序的n-1个数中,相邻元素依次比较,数大后移,排序后最大数移第n-1项。
4、以此类推,直到未排序的数减为0,排序结束。
例如:排序前的n个数为54321
第一次排序:43215(详细过程:45321、43521、43251、43215)
第二次排序:32145
第三次排序:21345
第四次排序:12345
冒泡排序法详细介绍:https://blog.csdn.net/lbcbjtlhmjq/article/details/128693488
代码:
#include<stdio.h>
void swap(int* x, int* y)//两数交换函数
{
int temp = *x;
*x = *y;
*y = temp;
}
void lyn(int* a, int n)//从前往后依次比较相邻元素大小
{
for (int j = 0; j < n / 2; j++)
for (int i = 0; i < n - 1; i++)
if (a[i] > a[i + 1])
swap(&a[i], &a[i + 1]);
}
void bjt(int* a, int n)//从后往前依次比较相邻元素大小
{
for (int j = 0; j < n / 2; j++)
for (int i = n - 2; i >= 0; i--)
if (a[i] > a[i + 1])
swap(&a[i], &a[i + 1]);
}
int main()
{
int n,x,j;
int i;
printf("输入正整数n(0<n<9):");
scanf("%d", &n);
int a[8] = { };
printf("输入%d个互不相同的整数:",n);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
printf("输入整数x:");
scanf("%d", &x);
for(i=0;i<n;i++)//删除与x相同的数
if (a[i] == x)
{
for (j = i + 1; j < n; j++)
{
a[j - 1] = a[j];
}
n--;
}
lyn(a, n);
bjt(a, n);
for (i = 0; i < n; i++)
printf("%d", a[i]);
return 0;
}