【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;
        }
    }
    

}
        
        

 

posted @ 2020-08-02 23:48  JodyJoy  阅读(115)  评论(0编辑  收藏  举报