C++排序算法之選擇排序算法

2.選擇排序算法

思想:第一趟,找到最小元素,與第一個元素交換;第二趟,找到次小元素和第二個元素交換;以此類推,需要做N-1次循環。每次循環中,再通過兩兩比較找到較小元素,記錄元素下標或者指針,最後交換。

void select_sort(int a[], int n)
{
	for (int i = 0; i < n - 1; i++)
	{
		int t=i;
		for (int j = i+1; j < n ; j++)
		{
			if (a[t]>a[j])
				t = j;
		}
		if (t != i)
		{
			int temp = a[i];
			a[i] = a[t];
			a[t] = temp;
		}
	}
}
用指針
void select_sort(int a[], int n)
{
	for (int i = 0; i < n - 1; i++)
	{
		int *p = a + i;
		for (int j = i+1; j < n ; j++)
		{
			if (*(a+j)<*p)//if (a[t]>a[j])
				p = a+j;
		}
		if (p != a+i)
		{
			int temp = *(a+i);
			*(a + i) = *p;
			*p = temp;
		}
	}
}





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