排序算法之直接选择排序及Java实现

一、排序算法的分类

  1. 选择排序(直接选择排序堆排序
  2. 交换排序(冒泡排序快速排序
  3. 插入排序(直接插入排序希尔排序
  4. 归并排序
  5. 桶式排序
  6. 基数排序

二、直接选择排序的原理

选择排序是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

三、直接选择排序的实现


public class SelectSort {

    /**
     * 选择排序
     * 选择第一个与其后的所有元素进行比较,将最小值放在第一个位置
     * 第一个位置放好之后,再选择第二个与其后的所有元素进行比较,再将最小值放在第二个位置
     * ...
     * 以此类推,直到最后一个位置也被放置了元素
     * 
     * @param a int数组
     */
    public static void selSort(int a[]){

        if(a==null||a.length==0){
            return;
        }
        for (int i = 0; i < a.length; i++) {
            int tmp = a[i];//存储遍历时最小的值
            int flag = i;//存储最小值的位置
            for(int j = i+1;j<a.length;j++){
                if(a[j]<tmp){
                    //找到更小的值,将值和位置存储起来
                    tmp = a[j];
                    flag = j;
                }
            }

            int tmp2 = a[i];//临时保存a[i]的值,用于交换值得位置
            a[i] = tmp;
            a[flag] = tmp2;
        }   
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] test = {2,3,5,4,9,6,7};
        selSort(test);

        for(int i=0; i<test.length; i++){
            System.out.print(test[i] + " ");
        }

    }

}

测试结果:

2 3 4 5 6 7 9 

猜你喜欢

转载自blog.csdn.net/xdzhouxin/article/details/80017538