算法---选择排序-java实现

原理图





算法---选择排序-java实现---复制黏贴本博客到eclipse,运行即可看到结果。

/**
 * 
* @ClassName: SelctionSort  
* @Description: 选择排序-正序(从小到大排序)
* @author szren  
* @date 2018年5月30日 下午3:26:37  
*
*原理示意图:
*	原始数据:		8 2 6 1 7 5 3 9 4
*
*			i=0		1|2 6 8 7 5 3 9 4   --找到最小值1下标为【3】,8和1交换位置
*			i=2		1 2|6 8 7 5 3 9 4	--找到最小值2下标为【1】,不用交换位置
*			i=2		1 2 3|8 7 5 6 9 4	--找到最小值3下标为【6】,6和3交换位置
*			i=3		1 2 3 4|7 5 6 9 8	--找到最小值4下标为【8】,8和4交换位置
*			i=4		1 2 3 4 5|7 6 9 8	--找到最小值5下标为【5】,7和5交换位置
*			i=5		1 2 3 4 5 6|7 9 8	--找到最小值6下标为【6】,7和6交换位置
*			i=6		1 2 3 4 5 6 7|9 8	--找到最小值7下标为【6】,不用交换位置
*			i=7		1 2 3 4 5 6 7 8|9	--找到最小值8下标为【8】,9和8交换位置
*
*		选择排序的时间复杂度:简单选择排序的比较次数与序列的初始排序无关。 
*			假设待排序的序列有 N 个元素,则比较次数永远都是N (N - 1) / 2。
*		简单排序的时间复杂度为 O(N2)。
*		移动次数与序列的初始排序有关。当序列正序时,移动次数最少,为 0。
*		
*
 */
 
 
import java.util.Arrays;
public class SelctionSort {public static void main(String[] args) {int aa[]={8, 2, 6 ,1, 7, 5, 3, 9, 4};System.out.println("数组长度"+aa.length);System.out.println("数组初始顺序::"+Arrays.toString(aa));select_sort(aa,aa.length);System.out.println("选择排序后的顺序 shunxu::"+Arrays.toString(aa));}private static void select_sort(int array[],int lenth){ for(int i=0;i<lenth-1;i++){ int minIndex = i;//最小值下标 //计算最小值得下标,不做交换 for(int j=i+1;j<lenth;j++){ if(array[j]<array[minIndex]){ minIndex = j; } } //判断是否需要交换位置 if(minIndex != i){ int temp = array[i]; array[i] = array[minIndex]; array[minIndex] = temp; } }}}

猜你喜欢

转载自blog.csdn.net/shumuqinghua/article/details/80512057