1. 程式人生 > >ACMNO.20 C語言-插入佇列 已有一個已排好的9個元素的陣列,今輸入一個數要求按原來排序的規律將它插入陣列中。 輸入 第一行,原始數列。 第二行,需要插入的數字。

ACMNO.20 C語言-插入佇列 已有一個已排好的9個元素的陣列,今輸入一個數要求按原來排序的規律將它插入陣列中。 輸入 第一行,原始數列。 第二行,需要插入的數字。

題目描述

已有一個已排好的9個元素的陣列,今輸入一個數要求按原來排序的規律將它插入陣列中。

輸入

第一行,原始數列。 第二行,需要插入的數字。

輸出

排序後的數列

樣例輸入

1 7 8 17 23 24 59 62 101
50

樣例輸出

1
7
8
17
23
24
50
59
62
101

來源/分類

C語言 

題目截圖:
在這裡插入圖片描述
思路:

九個數,要建立一個長度為10的陣列!
儲存所有的資料!

先來一個迴圈進行查詢,然後再替換!

for(i=0;i<z;i++)
	{
	}
然後,發現之後進行替換!比它小的就進行替換!
		if(a[i]>b)
		{
		}
然後就開始,往後進行遷移!
			for(int j=z-1;j>i;j--)
			{
				a[j]=a[j-1];
			}

重點來啦!這個替換必須要最後再進行,要不然,就會出現重複的資料啦!
重點來啦!這個替換必須要最後再進行,要不然,就會出現重複的資料啦!
重點來啦!這個替換必須要最後再進行,要不然,就會出現重複的資料啦!
重點來啦!這個替換必須要最後再進行,要不然,就會出現重複的資料啦!
我在這裡,就栽跟頭啦!
			a[i]=b;
然後結束迴圈!
			break;
		

完整程式碼後面再給出來!

程式碼:

#include<iostream>
using namespace std;
#define z 10
int main()
{
	int a[z]={0};int i,b;
	for(i=0;i<z-1;i++)
	{
		
		cin>>a[i];
	}
	//cout<<"end!"<<endl;
	cin>>b;

	for(i=0;i<z;i++)
	{
	//cout<<" "<<a[i];
	}//cout<<endl;
	for(i=0;i<z;i++)
	{
		if(a[i]>b)
		{
			
			for(int j=z-1;j>i;j--)
			{
				a[j]=a[j-1];
			}
			a[i]=b;
			break;
		}
		//cout<<i<<endl;
	}
	//cout<<endl;
	for(i=0;i<z;i++)
	{
	cout<<a[i]<<endl;
	}
}

程式碼截圖:
在這裡插入圖片描述
執行結果:
在這裡插入圖片描述
OJ結果:
在這裡插入圖片描述