• Java实现算法之--选择排序


            选择排序也是比較简单的一种排序方法,原理也比較easy理解,它与冒泡排序的比較次数同样,但选择排序的交换次数少于冒泡排序。冒泡排序是在每次比較之后,若比較的两个元素顺序与待排序顺序相反,则要进行交换,而选择排序在每次遍历过程中仅仅记录下来最小的一个元素的下标,待所有比較结束之后,将最小的元素与未排序的那部分序列的最前面一个元素交换,这样就减少了交换的次数,提高了排序效率。


    看一下实现代码:

    public class ChoiceSort {
    
    	public static void _choiceSort(Integer[] a) {
    		if (a == null || a.length <= 0) {
    			return;
    		}
    		for (int i = 0; i < a.length-1; i++) {//这里为什么-1?思考一下
    			int min = i; /* 将当前下标定义为最小值下标 */
    
    			for (int j = i + 1; j < a.length; j++) {
    				if (a[min] > a[j]) { /* 假设有小于当前最小值的keyword */
    					min = j; /* 将此keyword的下标赋值给min */
    				}
    			}
    			if (i != min) {/* 若min不等于i。说明找到最小值,交换 */
    				int tmp = a[min];
    				a[min] = a[i];
    				a[i] = tmp;
    			}
    		}
    	}
    }
    

    编写測试方法:

    public static void main(String[] args) {
            
             Integer[] list={49,38,65,97,76,13,27,14,10};
             
             //选择排序
             ChoiceSort._choiceSort(list);
             
             for(int i=0;i<list.length;i++){
                 System.out.print(list[i]+" ");
             }
             System.out.println();
        }
    

    输出结果:

    10 13 14 27 38 49 65 76 97 

    喜欢的朋友关注我!

    多谢支持!

  • 相关阅读:
    【java】一维数组循环位移方阵
    【java】for循环输出数字金字塔
    C++编程tips
    C++中cin.get 和cin.peek 及其相关的用法
    ubuntu增加字符设备驱动程序/ 操作系统课程设计
    C++ Primer 学习笔记/ 处理类型
    C++学习,顶层const
    C++学习笔记/const和指针
    ubuntu16.04增加系统调用(拷贝)
    Java学习笔记#数组 循环遍历
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/7276995.html
Copyright © 2020-2023  润新知