选择排序算法,为什么不对啊....(网上的代码是挑出最小值的标号,这个是挑出最小值)

import java.util.Scanner;
public class Test {
    public static void main(String[] args){
        int[] array = new int[6];
        Scanner in = new Scanner(System.in);
        for(int i = 0;i < array.length;i++){
            array[i] = in.nextInt();
        }
        sort2(array);
    }
    public static void sort1(int array[]){
        int min = 0;
        int temp = 0;
        int t = 0;
        for(int i = 0;i < array.length - 1;i++){
            temp = array[i];//记录这个位置的值
            for(int j = i + 1;j < array.length;j++){
                if(array[i] > array[j]){
                    array[i] = array[j];//最小值移到前面去
                    t = j;
                }
            }
            if(i != t){
                array[t] = temp;//前面的值移到原来最小值的位置上来
            }
        }
        for(int i = 0;i < array.length;i++){
            System.out.println(array[i]);
        }
    }
package ask;

import java.util.Arrays;
import java.util.Scanner;

public class Test2 {
	public static void main(String[] args) {
		int[] array = new int[] { 2, 5, 1, 6, 3, 4 };
		sort1(array);
	}

	public static void sort1(int array[]) {
		for (int i = 0; i < array.length; i++) {
			for (int j = i + 1; j < array.length; j++) {
				if (array[j] < array[i]) {
					int x = array[i];
					array[i] = array[j];// 最小值移到前面去
					array[j] = x;
				}
			}
		}
		for (int i = 0; i < array.length; i++) {
			System.out.println(array[i]);
		}
	}
}

1
2
3
4
5
6
 

public static void selectionSort(int arr[]) {
		int len = arr.length;
 
		for (int i = 0; i < len - 1; i++) {
			// Finding the minimum element in the unsorted part of array
			int min = i;
			for (int j = i + 1; j < len; j++)
				if (arr[j] < arr[min])
					min = j;
 
			/*
			 * Swapping the found minimum element with the first element of the sorted
			 * subarray using temp variable
			 */
			int temp = arr[min];
			arr[min] = arr[i];
			arr[i] = temp;
			System.out.println(i + "次处理:" + Arrays.toString(arr));
		}
	}

 

交换排序和选择排序的不同主要体现在选择和交换上。
就拿第一个元素来讲(比如此时做的是降序,即从大到小)
对于交换排序:在排序过程中会拿第一个元素和后面的元素挨个比较,只要是比第一个元素大的,都和第一个元素交换。(用交换元素来找到相应元素)
对于选择排序:会用一个额外的变量,记下数组下标。在排序过程中会拿第一个元素和后面的元素挨个比较,找到最大元素的下标。(用数组下标来找到相应元素)
综上所述,交换排序就是只要遇到更大的就交换,每次交换的后面可能会遇到更大的,因此可能不是最终结果。而选择排序每次交换都会确定一个元素,交换后后面没有比它更大的。
————————————————
版权声明:本文为CSDN博主「可可KEKEKE」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43986898/article/details/104519207