選擇排序
選擇排序是通過每一趟排序過程中從待排序記錄中選擇出關鍵字最小(大)的記錄,將其依次放在資料表的最前或最後端的方法來實現整個資料表的有序排列。本節將介紹選擇排序方法中最簡單且最常用的簡單選擇排序。
選擇排序基本思想
第一趟排序在所有待排序的n個記錄中選出關鍵字最小的記錄,將它與資料表中的第一個記錄交換位置,使關鍵字最小的記錄處於資料表的最前端;第二趟在剩下的n-1個記錄中再選出關鍵字最小的記錄,將其與資料表中的第二個記錄交換位置,使關鍵字次小的記錄處於資料表的第二個位置;重複這樣的操作,依次選出資料表中關鍵字第三小、第四小…的元素,將它們分別換到資料表的第三、第四…個位置上。排序共進行n-1趟,最終可實現資料表的升序排列。
/*
//===========================================
// 簡單選擇排序
// Author:Eman Lee
// Date: 10/21/2007
//===========================================
*/
#include<stdio.h>
#define N 10
void Display(int *a, int n)
{
int i;
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
}
void SelectionSort(int *a, int n)
{
int i, j, index, value;
for (i = 0; i < n - 1; i ++) {
index = i;
value = a[i];
for (j = i + 1; j < n; j ++)
if (value > a[j]) {
index = j;
value = a[j];
}
a[index] = a[i];
a[i] = value;
Display(a, n);
}
}
void main()
{
int a[N],i ;
for(i=0;i<N;i++)
a[i]=N-i;
Display(a, N);
SelectionSort(a, N);
}