简单选择排序算法 (JAVA)

简单选择排序算法 (JAVA),第1张

简单选择排序算法 (JAVA)
算法实现思想:

  选择排序一共排序了n-1轮。

for (int i = 0; i < arr.length - 1; i++) {
        
}

  定义变量min来记录每轮中需要比较序列中的最小数,变量minIndex记录每轮中最小数的下标.

int min = arr[i];
int minIndex = i;


  第i轮,将第i个数赋给min,然后从下标为i+1的位置开始,遍历后续元素,让它们跟min比较。如果比min小,则将其值赋给min,并用minIndex记录其下标。如果比min大,则遍历下一个元素,直至找到最小数。

for(int j = i + 1; j < arr.length; j++) {  //每一轮的比较
	if(min > arr[j]){ //将min和遍历的元素比较,比min小则将其值赋给min,并记录最小数下标minIndex
		min = arr[j];
		minIndex = j;
	}
}




对无序序列{-4, 5, 7, 1, 3}采用简单选择排序算法进行排序,具体过程为:

   第1轮:取-4赋给min,此时min的下标为0。从下标为1位置即5开始遍历,逐个和min进行比较,找出最小的数,并将其和第一个元素交换。这里由于-4就是最小数,所以-4还是在第一个位置。所以第1轮的结果为:{-4, 5, 7, 1, 3}


   第2轮:取5赋给min,此时min的下标为1。从下标为2位置即7开始遍历,逐个和min进行比较,找出最小的数,并将其和第一个元素交换。遍历完后可以确定最小数min=1,下标为3,然后将下标为1和下标为3的数交换位置。所以第2轮的结果为:{-4, 1, 7, 5, 3}


   第3轮:{-4, 1, 3, 5,7}


   第4轮:{-4, 1, 3, 5, 7}

public class SimpleSelectionSort {

    public static void main(String[] args) {
        int[] arr = {-4, 5, 8, 6, 3, 9, 2, 1, 7};
        simpleSelectionSort(arr);
        System.out.println(Arrays.toString(arr));
    }

    private static void simpleSelectionSort(int[] arr){
        for (int i = 0; i < arr.length - 1; i++) { //选择排序的轮数(n-1轮)
            
            int min = arr[i]; //定义min存放每轮比较的最小数,先将每轮比较的第一个数赋给min
            int minIndex = i; //定义minIndex存放每轮比较的最小数的下标,先将每轮比较的第一个数的下标赋给minIndex
            for (int j = i + 1; j < arr.length; j++) { //遍历寻找每轮的最小数
                if(min > arr[j]){ //将min和遍历的元素比较,比min小则将其值赋给min,并记录最小数的下标minIndex
                    min = arr[j];
                    minIndex = j;
                }
            }
            arr[minIndex] = arr[i]; //将每轮的第一个元素放到minIndex位置
            arr[i] = min; //将min的值放到每轮的第一个元素位置
        }
    }

}

https://www.bilibili.com/video/BV1dV411U7VN?p=4

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5676884.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存