问题描述:
将一组数据存放在一维数组中,并将他们排好序,从键盘输入一个数,要求按原来的顺序将它插入到数组合适的位置上。
代码展示:
1 #include<stdio.h>
2 void BubbleSort(int a[], int n);
3 int main(){
4 int a[10] = {20, 12, 60, 94, 82, 45, 66};
5 int count = 7;
6 int inputNum; //要插入的变量
7 int i; //循环变量
8 printf("原始序列为:\n");
9 for(i=0;i<count;i++){
10 printf("%d ",a[i]);
11 }
12 BubbleSort(a,count); //对原始序列冒泡排序
13 printf("\n排序后的序列为:\n");
14 for(i=0;i<count;i++){
15 printf("%d ",a[i]);
16 }
17 printf("\n请输入要插入的数字:"); //插入新元素
18 scanf("%d",&inputNum);
19 for(i=count-1;i>=0;i--){ //插入到合适位置
20 if(a[i]>inputNum){
21 a[i+1] = a[i];
22 }else{
23 a[i+1] = inputNum;
24 count ++;
25 break;
26 }
27 }
28 printf("\n插入元素后的序列为:\n");
29 for(i=0;i<count;i++){
30 printf("%d ",a[i]);
31 }
32
33 return 0;
34 }
35 void BubbleSort(int a[], int n){
36 int i,j;
37 int flag;
38 int temp;
39 for(i=0; i<n; i++){
40 flag = 0;
41 for(j=1;j<n-i;j++){
42 if(a[j-1]>a[j]){
43 temp = a[j-1];
44 a[j-1] = a[j];
45 a[j] = temp;
46 flag = 1;
47 }
48 }
49 if(flag == 0){
50 return;
51 }
52 }
53 }
运行截图: