您的位置:首页 > 编程语言

选择排序原理及代码实现

2015-11-14 21:24 176 查看
选择排序及原理

简单选择排序类似于冒泡排序(Bubble Sort) ,每次都会在剩下的元素集合中选择出一个最值出来填充到当前位置。唯一的区别是,冒泡排序在每次发现比当前值小于(或大于)时,都会交换元素的位置, 而 简单选择排序是选择剩余元素中的最值和当前位置交换数据。

  比如对于元素集合R={37, 40, 38, 42, 461, 5, 7, 9, 12}

  在第一趟排序中:37直接和5交换, 形成新的序列 R1={5,40,38,42,461,37,7,9,12}

  在第二趟排序中:40直接和7交换, 形成新的序列 R2={5,7,38,42,461,37,40,9,12}

  以此类推,直到最后一个元素(注意:在第二趟排序中,38比42小,但是他们并没有交换数据)。

package ch02;
/**
* 选择排序
* @author 小明
*
*/
public class SelectionSort {
public static void sort(long [] arr){
int k = 0;
long tmp = 0;
for(int i =0;i<arr.length;i++){
k =i;
for(int j =i;j<arr.length;j++){
if(arr[j]<arr[k]){
k=j;//每次k为最小值
}
}

tmp =arr[i];
arr[i]=arr[k];
arr[k] =tmp;
}
}
}


package ch02;

public class TestSort {
public static void main(String[] args) {
long[]arr = new long[]{20,4,5,6,3,7,1};
//	BubbleSort bubbleSort = new BubbleSort();
//	bubbleSort.sort(arr);
SelectionSort selectionSort = new SelectionSort();
selectionSort.sort(arr);
for (int s = 0; s < arr.length; s++) {
System.out.println(arr[s]);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: