1. 程式人生 > >小甲魚 排序演算法 選擇排序

小甲魚 排序演算法 選擇排序

小甲魚 排序演算法 選擇排序

 

雖然選擇排序 和 氣泡排序 進行的比較次數是一樣的,但是選擇排序 比 氣泡排序 進行移動的次數少,效率更高

 

選擇排序:

//selectsort.c
#include <stdio.h>

void SelectSort(int k[], int n)
{
	int i, j, min, temp, count1=0, count2=0;
	for(i = 0; i < n-1; i++)
	{
		min = i;
		for(j = i+1; j < n; j++)
		{
			count1++;
			if (k[j] < k[min])
			{
				min = j;//最小元素的位置 
			}
		}
		
		if (min != i)//待交換的i
		{
			count2++;
			temp = k[min];
			k[min] = k[i];
			k[i] = temp;
		}	
	}
	
	printf("總共進行了%d次比較,進行了%d次移動!\n", count1, count2);
}

int main(void)
{
	int i, a[10] = {5, 2, 6, 0, 3, 9, 1, 7, 4, 8};
	
	SelectSort(a, 10);
	
	printf("排序後的結果是:");
	for(i = 0; i < 10; i++)
	{
		printf("%d", a[i]);
	}
	printf("\n\n");
	return 0;
}