【Java学习日记】编程题整理-8.02 选择排序和插入排序
选择排序:算法的思想就是把第i个数从头开始往后比较,找到小的就交换位置。直到每个数都和之后的元素比较完。
import java.lang.reflect.Array; import java.util.Arrays; import java.util.Scanner; public class MyTest { public static void main(String[] args) { //选择排序 Scanner input = new Scanner(System.in); int[]list = {3,7,8,2,5,7,6,5,5}; SelecttheSmallest(list); System.out.println(Arrays.toString(list)); } public static void SelecttheSmallest(int[] list) { for(int i=0;i<list.length-1;i++) { int currentMin=list[i]; int currentIndex=i; for(int j =i+1;j<list.length;j++) { if(currentMin>list[j]) { //保存最小值到临时最小值 currentMin = list[j]; currentIndex =j; } } if(currentIndex != i) { //如果下标改变了,交换currentMin和list[i] list[currentIndex] =list[i]; //这里的list[current]相当于list[j],交换i和j list[i] = currentMin; //把j的值赋予i,保持i依然是最小值 } } } }
插入排序:其思想就是把后一个元素跟前一个元素比较,如果如果比前一个数大就继续,如果小就让前一个元素往后挪位置。
import java.lang.reflect.Array; import java.util.Arrays; import java.util.Scanner; public class MyTest { public static void main(String[] args) { //插入排序 Scanner input = new Scanner(System.in); int[]list = {3,7,8,2,5,7,6,5,5}; Insertsort(list); System.out.println(Arrays.toString(list)); } public static void Insertsort(int[] list) { for(int i =1; i<list.length;i++) { int currentElement = list[i]; int k; for(k = i-1;k>=0 && list[k]>currentElement;k--) { list[k+1] = list[k]; } list[k+1] = currentElement; } } }