直接选择排序,也称冒泡排序思想:第一趟排序:首先将第一个记录的关键字和第二个记录的关键字比较,若为逆序,则将两个记录交换之,然后比较第二个和第三个的关键字。以此类推,直至第n-1个记录和第n个记录关键字比较为止。该过程为第一趟排序,使得最大的关键字排到了最后面。第二趟排序:对前n-1个记录进行相同操作,完成后使得次大的关键字排在n-1位置上。以此类推,进行第三、四次排序直到排序结束。判断排序结束条件是:在一趟排序过程中没有发生过交换记录的操作。一般第i趟排序是从第1个元素到(n-i+1)个记录依次比较相邻两个记录关键字,并在逆序时交换记录。
#define TRUE 1
#define FLASE 0
void directSwapSort(int *data,int count);
void directSwapSort(int *data,int count) {
int j;
int hasSwapped;
int lastSwappedIndex;
int endIndex = count - 1;
int tmp;
while(endIndex > 0) {
lastSwappedIndex = 0;
hasSwapped = FLASE;
for(j = 0;j < endIndex;j++){
if(data[j] > data[j-1]) {
tmp = data[j];
data[j] = data[j+1];
data[j+1] = tmp;
hasSwapped = TRUE;
lastSwappedIndex = j;
}
}
if(FLASE == hasSwapped) {
return;
}
endIndex = lastSwappedIndex;
}
}