1. 程式人生 > >2017.11.8

2017.11.8

es2017 ray 內存 log 好的 其中 img image pro

交換輸出

時間限制:3000 ms | 內存限制:65535 KB 難度:1
描述
輸入n(n<100)個數,找出其中最小的數,將它與最前面的數交換後輸出這些數。(如果這個第一個數就是最小的數,則保持原樣輸出,如果最小的數有相同的按照前面的交換)
輸入
輸入數據有多組,每組占一行,每行的開始是一個整數n,表示這個測試實例的數值的個數,跟著就是n個整數。n=0表示輸入的結束,不做處理。
輸出
對於每組輸入數據,輸出交換後的數列,每組輸出占一行。
樣例輸入
4 2 1 3 4
5 5 4 3 2 1
0
樣例輸出
1 2 3 4
1 4 3 2 5


技術分享

#include<iostream>
#include<string>
#include<stack> //出入棧頭文件
using namespace std;
int main()
{
int n=0;
cin>>n;
int array[n]; //用於排序的數組,其實更好的方法是不用進行排序的
int arr1[n]; //用於保存原來輸入的原始數據
int m=0; //用於存儲最小數所在的位置
for(int k=0;k<n;k++)
{
cin>>array[k];
arr1[k]=array[k];
}
for(int i=1;i<n;i++) //插入排序法
{
int temp=array[i];
int j=i-1;
while(j>=0&&array[j]>temp)
{
array[j+1]=array[j];
j--;
}
array[j+1]=temp;
}
for(int k=0;k<n;k++)//計算出 原始數據中最小數所在的位置,方便後面交換
{
if(arr1[k]==array[0])
m=k;
}
int temp2=arr1[0]; //交換最小數與原來數據的第一位
arr1[0]=array[0];
arr1[m]=temp2;
for(int k=0;k<n;k++)//輸出
{
cout<<arr1[k]<<‘ ‘;

}
return 0;
}



2017.11.8