C++實現選擇排序
阿新 • • 發佈:2019-01-10
#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; }