排序算法之选择排序

选择排序:其思想是通过每趟把最大或最小的元素放在最后或最前,这里我们需要一个基数,一般我们选择第一个元素(底层数组实现)。第一趟比较下来,这里选择把最大的找出然后和数组最后一位交换。第二趟把次大的放在倒数第二位,依次类推。
Java实现如下:

public class SelectSort{
    public static void selectSort(int []arr){
        int index;//定义一个基数,存放数组第一位
    ////需比较的趟数,随着比较的进行,当只剩最后一个数时,就不用比较了所以i比数组的长度小1
         for(int i = 1; i < arr.length; i++){
                   index = 0;//每趟循环下来要把index重置0,因为把第一位作为基数和其它元素比较
        //j会随比较趟数而缩短区间,因为经过一趟或几趟,数组后面的元素基本排好顺序
            for(int j = 1; j <= arr.lenght - i; j++){
                if(arr[j] > arr[index]){//找出最大的
                    index = j;//交换位置索引
            }
                //交换两个元素
                int temp = arr[arr.lenght-i];
                arr[arr.length-i] = arr[index];
                arr[index] = temp;
        }
     }
   }
   //测试一下
   public static void main(String[] args) {
        int []arr = new int []{2,4,1,2002,100,432,12};
        SelectSort.selectSort(arr);
        System.out.println("经过选择排序后的数组为:");
        for (int i : arr) {
            System.out.print(i + " ");
        }
    }
 }

//测试结果如下
经过选择排序后的数组为:
1 2 4 12 100 432 2002

初次使用博客,请各位多多指教,不足之处烦请各位指出纠正,谢谢!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值