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;
}
}
}