您的位置:首页 > 编程语言 > C语言/C++

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

2013-11-29 21:45 274 查看
题目:
给定一个有序数组,内容为 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C语言 王吉平
相关文章推荐