1.簡單選擇排序(Simple Selection Sort)
在要排序的一組數(shù)中警医,選擇最小的記錄與第一個(gè)位置的記錄交換;然后在剩下的數(shù)中井赌,選擇最小的記錄與第二個(gè)位置的記錄交換...以此類推喷屋,直到第n-1個(gè)數(shù)與第n個(gè)數(shù)比較為止苏研。
- 選擇排序示例:
第一排為初始表,前面斜體加粗記錄為有序表欲诺,緊接著加粗記錄為待被交換記錄抄谐,有序表后斜體加黑記錄為符合條件的待交換記錄。
外層循環(huán) | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
i = 1 | 23 | 15 | 30 | 1 | 27 | 16 | 54 | 56 | 28 | 10 |
i = 2 | 1 | 15 | 30 | 23 | 27 | 16 | 54 | 56 | 28 | 10 |
i = 3 | 1 | 10 | 30 | 23 | 27 | 16 | 54 | 56 | 28 | 15 |
i = 4 | 1 | 10 | 15 | 23 | 27 | 16 | 54 | 56 | 28 | 30 |
i = 5 | 1 | 10 | 15 | 16 | 27 | 23 | 54 | 56 | 28 | 30 |
i = 6 | 1 | 10 | 15 | 16 | 23 | 27 | 54 | 56 | 28 | 30 |
i = 7 | 1 | 10 | 15 | 16 | 23 | 27 | 54 | 56 | 28 | 30 |
i = 8 | 1 | 10 | 15 | 16 | 23 | 27 | 28 | 56 | 54 | 30 |
i = 9 | 1 | 10 | 15 | 16 | 23 | 27 | 28 | 30 | 54 | 56 |
i = 10 | 1 | 10 | 15 | 16 | 23 | 27 | 28 | 30 | 54 | 56 |
- 選擇排序代碼示例:
private static void simpleSelectSort(int a[], int n)
{
for (int i = 0; i < n; i++)
{
int min = i;
for (int j = i+1; j < n; j++)
{
if (a[j] < a[min])
{
min = j;
}
}
if (min != i)
{
int tmp = a[i];
a[i] = a[min];
a[min] = tmp;
}
}
}