【數據結構】(七)簡單選擇排序

簡單選擇排序的思想是每次將未排序元素中的最小元素選出,放到已排序的末尾並右移。假設此處指升序排序。降序選最大元素放到前面。

#include <iostream>
using namespace std;

template <class T>
void SimpleSelectSortUp(T* ar, int n) {
	int i, j, position;
	T min;
	for ( i = 0; i < n; i++)
	{
		cout << " " << i << " 次 " << "  ";
		min = ar[i];
		// position用於標記最小值的位置,以將序列中最小值之前未排好序的值右移
		position = i;
		// 選出最小值
		for (j = i; j < n; j++) {
			if (ar[j] < min)
			{
				min = ar[j];
				position = j;
			}
		}
		cout << " min  " << min;
		for ( j = position; j > i; j--)
		{
			ar[j] = ar[j - 1];
		}
		ar[i] = min;

		for (int loop = 0; loop < n; loop++)
		{
			cout << "  " << ar[loop];
		}
		cout << endl;
	}
}

int main(int argc, const char* argv[]) {
	int* a = new int[6];
	a[0] = 2;
	a[1] = 0;
	a[2] = 3;
	a[3] = 1;
	a[4] = 7;
	a[5] = 5;
	//BinaryInsertSortUp(a, 6);
	//BinaryInsertSortDown(a, 6);
	SimpleSelectSortUp(a, 6);
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章