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;
}
原文:http://www.cnblogs.com/panlangen/p/7806797.html