選擇排序

1、原理

選擇排序的第i趟排序,從第i個記錄開始掃描序列,在n-i+1(1≤i≤n-1)個記錄中找到最小的記錄,並和第i個記錄交換作爲有序序列的第i個記錄。


2、代碼實現

#include<iostream>
using namespace std;

void select_sort(int data[], int n)
{
	for (int i = 0; i <= n - 2; i++)  //對n個記錄進行n-1趟簡單選擇排序
	{
		int min_index = i;
		for (int j = i + 1; j <= n-1; j++)   //在無序區中找最小記錄
			if (data[j] < data[min_index])
				min_index = j;
		if (i != min_index)    //若最小記錄不在最終位置則交換
			swap(data[i], data[min_index]);
	}
}

int main(int argc, char *argv[])
{
	int data[20] = {1, 7, 3, 50, 43, 34, 78, 23, 67, 90};
	select_sort(data, 10);
	int i = 0;
	while (i < 10)
	{
		cout << data[i] << ' ';
		++i;
	}
	system("pause");
	return 0;
}

3、時間複雜度

select_sort函數中,考慮外層循環和內層循環執行次數,可得時間複雜度:
          


發佈了37 篇原創文章 · 獲贊 88 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章