zoukankan      html  css  js  c++  java
  • A: 习题6-4 有序插入

    题目描述
    有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入到数组中。

    假设数组长度为10,数组中前9个数(这9个数要求从键盘上输入,输入时要满足自小到大的输入顺序)已经按从小到大进行排序。

    然后再从键盘上输入一个整数,将此整数插入到前有序的9个数中,使得最终的10个数依然是从小到大有序的。

    输入
    第一行输入以空格分隔的9个整数数,要求按从小到大的顺序输入。

    第二行输入一个整数

    输出
    从小到大输出这10个数,每个数一行。
    样例输入

    1 11 21 31 41 51 61 71 81
    45
    

    样例输出

    1
    11
    21
    31
    41
    45
    51
    61
    71
    81
    

    提示
    定义数组时,把数组长度定义为10.

    提交路径

    思路

    • 这道题不难,但就是不知道提交哪里错了,最后,经过更改得出如下:
      垃圾的初代C
    • 采用冒泡排序,结果有。但是!!!提交错误。就很纠结……
    #include <stdio.h>
    int main(){
    	int a[10]={0},i,j;
    	for(i=1;i<10;i++){
    		scanf("%d",&a[i]);
    	}
    	scanf("%d",&a[10]); 
    	for(i=1;i<=10;i++){//进行n-1趟 
    	//第i趟时从a[0]到a[n-i-1]都与他们下一个数比较 
    		for(j=0;j<10;j++){
    			if(a[j]>a[j+1]){//如果左边的数更大,则交换a[j]和a[j+1] 
    				int temp = a[j];
    				a[j]=a[j+1];
    				a[j+1]=temp;	
    			}
    		}
    	}
    	for(i=1;i<11;i++){
    		printf("%d
    ",a[i]);
    	}
    	return 0;
    }
    
    • 经过网上参考与修改,其实是我自己想多了,简单粗暴不香吗?
    • 插入有序的序列,从后往前,将大于此数的数后移,然后将此数插入,最后输出就行啦。
    #include <stdio.h>
    int main(){
    	int a[10],i;
    	for(i=0;i<10;i++)
    		scanf("%d",&a[i]);
    	int d=a[9],p=8;
    	while(a[p]>d){
    		a[p+1]=a[p];
    		p--;
    	}
    	a[p+1]=d;
    	for(i=0;i<10;i++)
    		printf("%d
    ",a[i]);
    	return 0;
    }
    
    欢迎查阅
  • 相关阅读:
    DevExpress XtraTabbedMdiManager删除Page
    Winform 窗体获得焦点
    leaflet 整合 esri
    使用 Leaflet 显示 ArcGIS 生成西安80坐标的地图缓存
    收藏一些编码舒服的cnblog博客园 博客
    获取字符串中的可能身份证号 并验证
    ASP.NET 的烂问题 -- 加载、创建c++项目失败
    ASP.NET 的烂问题
    sublime text3 解决打开文件中文乱码问题
    [转载]function与感叹号(转)
  • 原文地址:https://www.cnblogs.com/gh110/p/12373768.html
Copyright © 2011-2022 走看看