输入n个数进行排序
题目描述:输入n个数进行排序,要求先按奇偶后按从小到大的顺序排序。
输入描述:第一行输入一个整数n,表示总共有多少个数,n<=1000。第二行输入n个整数,用空格隔开。
输出描述:输出排序之后的结果。
C语言代码
#include <stdio.h>
void bulletsort(int arr[], int len) //冒泡排序{
int temp;
for (int i = 0; i < len - 1; ++i)
{
for (int j = 0; j < len - 1 - i; ++j)
{
if (arr[j] > arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main()
{
int n,i;
int num[1000];
scanf("%d", &n); //输入个数
for (i = 0; i < n; i++)
scanf("%d ", &num[i]); //输入数字
int ji[1000], ou[1000];
int a = 0, b = 0;//a是奇数的个数,b是偶数的个数
for (int i = 0; i < n; i++) //将奇数和偶数分离
{
if (num[i] % 2 == 0)
{
ou[b] = num[i];
b++;
}
else {
ji[a] = num[i];
a++;
}
}
bulletsort(ji, a); //分别对奇数进行排序
bulletsort(ou, b); //分别对偶数进行排序
for (i = 0; i < a; i++) //输出奇数
printf("%d ", ji[i]);
for (i = 0; i < b; i++) //输出偶数
printf("%d ", ou[i]);
return 0;
}
用了最简单、最粗暴容易想到的办法,对空间占用不是很好,在过程中出现了少取地址符的错误,以及函数的使用错误,误写为“bulletsort(ji[ ], a);”,实际上数组名是一级指针,不需要在后面加上[ ]。