C语言 - 有序数组插入后数据仍然是有序数组(曾经脑残写了半天)

来源:互联网 发布:六爻排盘软件 编辑:程序博客网 时间:2024/06/10 15:24
题目:    给定一个有序数组,内容为 2, 4, 6, 8, 10, 12, 14, 16, 18, 20;    输入一个数据,插入到数组中;    输出的数组仍然为有序数组

// 第一种:较为快速的方式#include <stdio.h>#include <stdlib.h>int main(void){int val, i;int a[11] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};scanf("%d", &val);for(i=9; i>=-1; i--){if ( a[i] > val ){a[i+1] = a[i];}else{a[i+1] = val;break;}}for(i=0; i<11; i++){printf("%d ", a[i]);}printf("\n");system("pause");return 0;}

// 第二种:按照题目要求,死方法写的方式#include <stdio.h>#include <stdlib.h>int main(void){int val, i, j;int a[11] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};scanf("%d", &val);for(i=0; i<10; i++){if(val <= a[i]){break;}}for(j=9; j>=i; j--){a[j+1] = a[j];}a[i] = val;for(i=0; i<11; i++){printf("%d ", a[i]);}printf("\n");system("pause");return 0;}
// 第三种:添加进数组最后,冒泡排序得到结果#include <stdio.h>#include <stdlib.h>int main(void){int n, i, j, min, temp, a[11] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};scanf("%d", &a[10]);min = a[0];for(i=0; i<11; i++){for(j=i; j<11; j++){if( a[i] > a[j]){temp = a[i];a[i] = a[j];a[j] = temp;}}}for(i=0; i<11; i++){printf("%d ", a[i]);}printf("\n");system("pause");return 0;}


原创粉丝点击