Java选择排序详解

    xiaoxiao2023-10-30  140

    选择排序(SelectionSort)

    转自:神话丿小王子:Java中的经典算法之选择排序(SelectionSort)

    简单选择排序的基本思想: 给定数组:int[] arr={里面n个数据}; 第1趟排序,在待排序数据arr[1]-arr[n]中选出最小的数据,将它与arrr[1]交换;第2趟,在待排序数据arr[2]-arr[n]中选出最小的数据,将它与r[2]交换; 以此类推,第i趟在待排序数据arr[i]-arr[n]中选出最小的数据,将它与r[i]交换,直到全部排序完成。 即在未排序列表中选择最小的放在已排序列表的最后一位。 举例:数组 int[] arr={5,2,8,4,9,1};


    第一趟排序: 原始数据:5 2 8 4 9 1

    最小数据1,把1放在首位,也就是1和5互换位置,

    排序结果:1 2 8 4 9 5


    第二趟排序:

    第1以外的数据{2 8 4 9 5}进行比较,2最小,

    排序结果:1 2 8 4 9 5


    第三趟排序:

    除1、2以外的数据{8 4 9 5}进行比较,4最小,8和4交换

    排序结果:1 2 4 8 9 5


    第四趟排序:

    除第1、2、4以外的其他数据{8 9 5}进行比较,5最小,8和5交换

    排序结果:1 2 4 5 9 8


    第五趟排序:

    除第1、2、4、5以外的其他数据{9 8}进行比较,8最小,8和9交换

    排序结果:1 2 4 5 8 9


    代码示例:

    //选择排序 public class SelectionSort { public static void main(String[] args) { int[] arr={1,3,2,45,65,33,12}; System.out.println("交换之前:"); for(int num:arr){ System.out.print(num+" "); } //选择排序 public static void selectionSort(int[] arr){ for(int i=0;i<arr.length-1;i++){ for(int j=i+1;j<arr.length;j++){ if(arr[i]>arr[j]){ int temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } } System.out.println(); System.out.println("交换后:"); for(int num:arr){ System.out.print(num+" "); } } }
    最新回复(0)