C++对10个数选择排序,升序输出
问题:有一个排好序的字符数组;今输入一个字符,要求按原来排序的规律将它插入数组中?
答案:首先字符数组要有至少多一个空间,如果没有,新建字符数组;
原字符数组长度+1的位置赋值为'\0';
循环i,从原字符数组最后一个字符的下标开始向头部递减;
比对字符,如果新字符大于下标字符,直接把新字符放在下一个下标位置,break出循环;
否则复制当前下标字符到下一个下标位置;
循环。
#include<stdio.h>
int main() {
int a[10], i, j, k, t;
//输入
for(i = 0; i < 10 ; i++)
scanf("%d", &a[i]);
//选择法排序
for(i = 0; i < 10 - 1; i++) {
k = i;
for(j = i + 1; j < 10; j++)
if (a[k] > a[j])
k = j;
if(k != i) {
t = a[i];
a[i] = a[k];
a[k] = t;
}
}
//输出
for(i = 0; i < 10; i++)
printf("%d\n", a[i]);
}
问题:有一个排好序的字符数组;今输入一个字符,要求按原来排序的规律将它插入数组中?
答案:首先字符数组要有至少多一个空间,如果没有,新建字符数组;
原字符数组长度+1的位置赋值为'\0';
循环i,从原字符数组最后一个字符的下标开始向头部递减;
比对字符,如果新字符大于下标字符,直接把新字符放在下一个下标位置,break出循环;
否则复制当前下标字符到下一个下标位置;
循环。