C++排序之選擇排序(3)

// SelectSort.cpp : 定義控制檯應用程序的入口點。
//
/*
選擇排序:對比數組中前一個元素跟後一個元素的大小,若是後面的元素比前面的元素小則用一個變量k來記住他的位置,
接着第二次比較,前面「後一個元素」現變成了「前一個元素」,繼續跟他的「後一個元素」進行比較若是後面的元素比他要小則用變量k記住它在數組中的位置(下標),
等到循環結束的時候,咱們應該找到了最小的那個數的下標了,而後進行判斷,若是這個元素的下標不是第一個元素的下標,就讓第一個元素跟他交換一下值,
這樣就找到整個數組中最小的數了。而後找到數組中第二小的數,讓他跟數組中第二個元素交換一下值,以此類推。
最壞時間複雜度:O(n^2)
最好:同上
平均:同上
穩定性:不穩定
*/

#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;

void SelectSort(int *a,int n)
{
	int i,j,min,temp;
	for( i = 0; i < n-1; i++ )
	{
		min = i;
		for( j = i+1; j < n; j++ )
			if( a[min] > a[j] )
				min = j;
		if( min != i )
		{
			temp = a[i];
			a[i] = a[min];
			a[min] = temp;
		}
	}
}

int _tmain(int argc, _TCHAR* argv[])
{
	int a[] = {88,3,24,1,100,44,1,7};
	SelectSort(a,8);
	for( int i = 0; i < 8; i++ )
	{
		cout<<a[i]<<setw(3);
	}
	return 0;
}
相關文章
相關標籤/搜索