概述
例如 2 3 4 5 6 0 0 0 4 5
结果 2 3 4 4 5 5 6 0 0 0
int sort(int* a,int len) {
int i = 0;
int count = 0;
for (i = 0; i < len;i++,a++) {
if (*a == 0) {
count++; //求含0的个数
}
}
printf("数组中含0的个数为%dn", count);
return count;
}
int main() {
int arr[99] = {0};
int i = 0;
int j = 0;
int tmp = 0;
int count = 0;
int* end = arr;
int n = 0;
printf("请输入数组中的元素 中间有空格隔开 输入完毕后回车确定n");
do {
scanf("%d", &j);
arr[i++] = j;
n++;
} while (getchar() != 'n'); //自己输入数组元素
count = sort(arr, n);
for (i = 1; i < n; i++) {
end++;
} //指向最后一个元素的地址
for (i = 0; i < n; i++) {
j = 0;
for (j = i + 1; j < n; j++) {
if (arr[i] > arr[j]) {
tmp = arr[i];
arr[i] = arr[j]; //先数组排序
arr[j] = tmp;
}
}
}
for (i = 0; i < count; i++) {
for (j = 0; j < n; j++) {
if (arr[j] == 0) { //把数字0放到最后一位
arr[j] = *end;
*end-- = 0;
break;
}
}
}
for (i = 0; i < n-count; i++) {
j = 0;
for (j = i + 1; j < n-count; j++) {
if (arr[i] > arr[j]) {
tmp = arr[i];
arr[i] = arr[j]; //再排序把数字0那几位元素个数 去掉
arr[j] = tmp;
}
}
}
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
最后
以上就是孤独枫叶为你收集整理的数组的排序的全部内容,希望文章能够帮你解决数组的排序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复