算法之选择排序

选择排序:

什么是选择排序呢,就是给你一组无序数组,进行排序,那么从第一个数开始,依次与后面的数进行比较,如果找到最小的,就放在第一位,然后从第二个再进行比较,放在第二个,重复以上操作,直到找到最后一个数,这样就完成了由小到大的一个排序,由大到小也是一样的。

本来的想法是找到一个最小的,直接从原来的数组中删除,然后放到新的数组中就好了,但是由于java中的数组删除一个数很麻烦,因此这边直接需要新建个swap方法,专门用来进行数组中的数进行交换使用。选择排序是一种灵巧的算法,其速度不是很快,运行时间为

题目:

输入一组无序数组,然后进行从小到大的排序,并输出最后的结果

java 复制代码
package com.dlh.test.算法;

import java.util.Scanner;

public class 选择排序 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] string =sc.nextLine().split(" ");
        int[] arr = new int[string.length];
        for (int i=0;i < string.length;i++){
            arr[i] = Integer.parseInt(string[i]);
        }
        //上面的代码主要是将输入的string数组转换成为int数组,便于后面进行比较大小
        selectionsort(arr);
        //单独写一个选择排序的方法
        for (int num:arr){
            System.out.print(num + " ");
        }
        //上面对arr进行for循环来打印数据
    }
    private static void selectionsort(int[] arr) {
        //遍历数据,从0开始遍历
        for (int i = 0; i < arr.length-1; i++) {
            //新建一个变量用来存储最小单元的索引
            int smallest_index = i;
            //从i+1进行遍历,因为是要跟i进行比较
            for (int j = i+1; j <arr.length ; j++) {
                //如果后面的数小于前面的数,则覆盖smallest_index
                if (arr[j] < arr[smallest_index]){
                    smallest_index = j;
                }
            }
            //内层循环结束后,已经找到了最小的值,然后将最小的值交换到前面,写一个swap方法
            //只要把找到的最小的依次替换i的位置即可
            swap(arr,i,smallest_index);
        }
    }
    private static void swap(int[] arr, int i, int smallest_index) {
        //数组交换方法
        int temp = arr[i];
        arr[i] = arr[smallest_index];
        arr[smallest_index] = temp;
    }
}
相关推荐
计算机小白一个6 小时前
蓝桥杯 Java B 组之设计 LRU 缓存
java·算法·蓝桥杯
万事可爱^7 小时前
HDBSCAN:密度自适应的层次聚类算法解析与实践
算法·机器学习·数据挖掘·聚类·hdbscan
大数据追光猿9 小时前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法
Dream it possible!9 小时前
LeetCode 热题 100_在排序数组中查找元素的第一个和最后一个位置(65_34_中等_C++)(二分查找)(一次二分查找+挨个搜索;两次二分查找)
c++·算法·leetcode
夏末秋也凉9 小时前
力扣-回溯-46 全排列
数据结构·算法·leetcode
南宫生9 小时前
力扣每日一题【算法学习day.132】
java·学习·算法·leetcode
柠石榴9 小时前
【练习】【回溯No.1】力扣 77. 组合
c++·算法·leetcode·回溯
Leuanghing9 小时前
【Leetcode】11. 盛最多水的容器
python·算法·leetcode
qy发大财9 小时前
加油站(力扣134)
算法·leetcode·职场和发展
王老师青少年编程9 小时前
【GESP C++八级考试考点详细解读】
数据结构·c++·算法·gesp·csp·信奥赛