`
ordinary
  • 浏览: 77312 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

计算机程序设计艺术-----选择排序

J# 
阅读更多
直接选择排序:
基本思想:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的后面(前面),直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
实现思想:
1、 针对n个数R[1…n]进行n-1趟选择就可排好序。
2、 无序序列R[1…n],有序列为空。
3、 第一趟选择,选出最小的数p[k],用p[k]和R[1]进行交换,得到无序序列R[2…n],有序列R[1].
4、 第二趟选择,从R[2…n]选出最小的数p[k],用p[k]和R[2]进行交换,得到无序序列R[3…n],有序列R[1…2].
重复上面过程,知道n-1趟。就排好序了。
例子:
初始关键字 [49 38 65 97 76 13 27 49]
第一趟排序后 13 [38 65 97 76 49 27 49]
第二趟排序后 13 27 [65 97 76 49 38 49]
第三趟排序后 13 27 38 [97 76 49 65 49]
第四趟排序后 13 27 38 49 [76 97 65 49 ]
第五趟排序后 13 27 38 49 49 [97 65 76]
第六趟排序后 13 27 38 49 49 65 [97 76]
第七趟排序后 13 27 38 49 49 65 76 [97]
最后排序结果 13 27 38 49 49 65 76 97
代码实现:
private void selectSort(int[] p) {
int tmp=0;
int tmpIndex=0;
for(int i=1;i<p.length;i++){
for(int j=i;j<p.length;j++){
if(p[tmpIndex]<p[j]){
tmpIndex=j;
}
}
tmp=p[tmpIndex];
p[tmpIndex]=p[i];
p[i]=tmp;
}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics