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