插入有序 的 三个位置

数列有序!

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 73308    Accepted Submission(s): 31071


Problem Description
有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。
 

Input
输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理。
 

Output
对于每个测试实例,输出插入新的元素后的数列。
 

Sample Input
      
      
3 3 1 2 4 0 0
 

Sample Output
      
      
1 2 3 4
 

Author
lcy


#include<cstdio>

#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
int a[110] ,b,c[110],m,r,i,j,k,l,t,h,cnt,max,n,y,d,s;
char str[110];
    while(scanf("%d%d",&n,&m)!=EOF&&(m||n))
    {
    for(i=0;i<n;i++)
    {
    scanf("%d",&a[i]);
}
   for(i=0;i<n;i++)
   {   
      if(i>0)
      printf(" ");
      if(a[i]<m)
      printf("%d",a[i]);
      else
      break;
}
printf("%d",m);
for(;i<n;i++)
{   
printf(" %d",a[i]);
}
printf("\n");
}
return 0;
}
### 回答1: 我可以为您提供一个C语言实现三个数字的插入排序的代码示例: #include <stdio.h> int main() { int array[3], i, j, num; printf("Enter 3 elements: \n"); for (i = 0; i < 3; i++) scanf("%d", &array[i]); for (i = 1; i < 3; i++) { num = array[i]; j = i-1; while (j >= 0 && array[j] > num) { array[j+1] = array[j]; j = j-1; } array[j+1] = num; } printf("Sorted array: \n"); for (i = 0; i < 3; i++) printf("%d\n", array[i]); return 0; } ### 回答2: 插入排序是一种简单直观的排序算法,可以用C语言来实现。下面是实现三个数字的插入排序的C代码: ```c #include <stdio.h> void insertionSort(int arr[], int n) { int i, key, j; for (i = 1; i < n; i++) { key = arr[i]; j = i - 1; while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j = j - 1; } arr[j + 1] = key; } } int main() { int arr[] = {5, 2, 8}; int n = sizeof(arr) / sizeof(arr[0]); printf("排序前的数组:\n"); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } insertionSort(arr, n); printf("\n排序后的数组:\n"); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; } ``` 以上代码首先定义了一个插入排序的函数`insertionSort`,以及一个`main`函数来测试插入排序的实现。在`main`函数中,定义了一个包含三个数字的整型数组`arr`,然后调用`insertionSort`函数对该数组进行排序。最后,分别打印排序前和排序后的数组。运行程序后,输出结果会显示排序前和排序后的数组。 ### 回答3: 插入排序是一种简单直观的排序算法,可以使用C语言实现。下面是一个用C语言实现插入排序的代码示例,用于对三个数字进行排序: ```c #include <stdio.h> // 函数声明 void insertionSort(int arr[], int n); // 插入排序函数 void insertionSort(int arr[], int n) { int i, key, j; for (i = 1; i < n; i++) { key = arr[i]; j = i - 1; while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j = j - 1; } arr[j + 1] = key; } } int main() { int arr[] = {3, 1, 2}; int n = sizeof(arr) / sizeof(arr[0]); printf("排序前的数组:"); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } insertionSort(arr, n); printf("\n排序后的数组:"); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; } ``` 输出结果为: ``` 排序前的数组:3 1 2 排序后的数组:1 2 3 ``` 该代码首先定义了一个`insertionSort`函数,用于实现插入排序。然后在主函数中定义一个包含三个数字的数组`arr`,并计算数组的长度`n`。接着,通过调用`insertionSort`函数来对数组进行排序。最后,输出排序前和排序后的数组内容。 插入排序的原理是,从第二个元素开始,依次将元素插入到已排序的子数组中。插入过程中,如果当前元素小于前一个元素,则将前一个元素后移一位,直到找到合适的位置插入。通过不断重复这个过程,直到整个数组有序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值