1. 程式人生 > >C++實現選擇排序

C++實現選擇排序

#include "stdafx.h"
#include<iostream>
using namespace std;
#define N 10
int _tmain(int argc, _TCHAR* argv[])
{//選擇法排序,第1輪:先選出最小值和第一個數交換
	//		   第2輪:在除去第1個數以外的剩下的數當中選出最小的數和第2個數交換...
	
	int array[10]={11,9,7,8,4,6,3,5,2,1};
	int i,j,k,t;
	for(j=0;j<N-1;j++)//一共要進行N-1次找最小的數
	{
		k=j;
		//內層迴圈尋找最小的數
		for(i=j+1;i<N;i++)//第1輪:從第2個數開始,逐個與第一個數相比較,如果比第一個數小,就將下標與第一個數交換
		{	           //第2輪:從第3數開始,逐個與第2個數相比較,如果比第2個數小,就將下標與第2個數交換...
		if(array[i]<array[k])	k=i;
		}
		if(k!=j){//如果k=j,說明剛開始的第一個數已經是該輪的最小值
		//元素交換
		t=array[k];//將找出的最小值暫時存放在t中
		array[k]=array[j];//將下一個數賦給array[k],為下一輪比較做準備
		array[j]=t;//將最小的數放到前面去
		}

	}
	cout<<"The sorted number is:"<<endl;
	//迴圈遍歷排好序的陣列,並列印輸出
	for(j=0;j<N;j++)
		cout<<array[j]<<"  ";
	return 0;
}