1.基本思想 选择排序的基本思想和冒泡排序有一点像,都是依次选择最小元素,次小元素…… ,但是和冒泡排序不同的是,冒泡排序发现小的就进行互换,但是选择排序是直接把小的放到应该出现的位置。
即:
首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾(目前已被排序的序列)。以此类推,直到所有元素均排序完毕。
2.选择排序的过程如下 n个元素的数组可以经过n-1趟选择排序后得到有序的结果:初始状态:无序区pData[1,2,...n],有序区间为空。第一趟排序:在无序区pData[1,2,...n]中选择最小的元素pData[k],将他与第一个元素pData[1]交换,使得pData[1...1]和pData[2,3,...n],分别表示有序区和无序区。每一次循环,有序区的长度加一,同时无序区长度减一。这样n个元素的序列可以通过n-1趟排序得到有序的序列。
3.说明 选择排序的时间复杂度为O(N^2),是原地排序,且不稳定排序。
4.实现- void selectSort(int *pData, int num)
- {
- int i, j, index, temp;
- for (i = 0; i < num - 1; i++)
- {
- index = i;
- for (j = i+1; j < num; j++)
- {
- if (pData[j] < pData[index])
- index = j;
- }
- if (index != i)
- {
- temp = pData[i];
- pData[i] = pData[index];
- pData[index] = temp;
- }
- }
- }
阅读(3200) | 评论(0) | 转发(0) |