選擇排序的C、C++實現


一、選擇排序

選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完。

二、程序實現

1.先是根據自己的思路寫了下面的程序,后來發現和網上好多例子都不一樣,元素交換的次數太多,很多是無意義的交換,還是把程序放在這兒做個參考,應該算是個不標准的選擇排序。

#include<iostream>
using namespace std;
 
const int BUFFSIZE = 6;
void Selection_Sort(int Arr[]);

int main()
{
	int Arr[BUFFSIZE] = { 5,4,89,10,7,100};  //待排序元素
	Selection_Sort(Arr);
	return 0;
}

// 選擇排序
void Selection_Sort(int Arr[])
{
	for (int i = 0; i < BUFFSIZE - 1; i++)
	{
		for (int j = i + 1; j < BUFFSIZE; j++)
		{
			if (Arr[i] < Arr[j])  // 將大的元素移到前面
			{
				int tmp = Arr[i];
				Arr[i] = Arr[j];
				Arr[j] = tmp;
			}
		}
	}
    //輸出排序后的元素
	for (int i = 0; i < BUFFSIZE; i++)
	{
		cout << Arr[i] << " ";
	}
	cout << endl;
}

  1. 這個應該是比較標准的選擇排序算法,每一輪排序先是記住沒排序的元素中最大的元素的索引,然后把它交換到前面來。
#include<iostream>
using namespace std;
 
const int BUFFSIZE = 6;
void Selection_Sort(int Arr[]);

int main()
{
	int Arr[BUFFSIZE] = { 5,4,89,10,7,100}; //待排序元素
	Selection_Sort(Arr);

	return 0;
}

// 選擇排序,從大到小排序
void Selection_Sort(int Arr[])
{
	for (int i = 0; i < BUFFSIZE-1 ; i++)  
	{
		int index = i;
		for (int j = i + 1; j < BUFFSIZE; j++)
		{			
			if (Arr[index] < Arr[j])
			{
				index = j;  //記錄待排序元素中最大值的索引		 		
			}
		}
		if (i != index)  // 將最大值移到前面
		{
			int tmp = Arr[i];
			Arr[i] = Arr[index];
			Arr[index] = tmp;
		}
	}
     //輸出排序后的元素
	for (int i = 0; i < BUFFSIZE; i++)
	{
		cout << Arr[i] << " ";
	}
	cout << endl;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM