八大排序算法(2)(插入排序+选择排序)

在这里插入图片描述

1、选择排序

思想:

  1. 从第一个元素开始,该元素可以认为已经被排序
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
  3. 如果该元素(已排序)大于新元素,将该元素移到下一位置
  4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
  5. 将新元素插入到该位置后
  6. 重复步骤2~5
public class T1130 {
    
    
    public static void main(String[] args) {
    
    
     int[] arr={
    
    1,4,3,6,7,8,5};
     quickInsertSort(arr);
        System.out.println(Arrays.toString(arr));
    }
    public static void selectSort(int[] arr){
    
    
        for (int i = 0; i <arr.length -1; i++) {
    
    
            int min=i;
            for (int j = i+1; j <arr.length ; j++) {
    
    
                if(arr[j]<arr[min])
                {
    
    
                    min=j;
                }
            }
            if(min!=i)
            {
    
    
                int temp = arr[i];
                arr[i]=arr[min];
                arr[min]= temp;
            }
        }

        System.out.println( Arrays.toString(arr));
    }
    }

2、插入排序

思想:

  1. 从待排序序列中,找到关键字最小的元素;
  2. 如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;
  3. 从余下的 N - 1 个元素中,找出关键字最小的元素,重复①、②步,直到排序结束。
    仅增量因子为1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。
    arr 待排序数组
    public static void quickInsertSort(int[] arr) {
    
    
        for (int i = 1; i <arr.length ; i++) {
    
    
            int temp =arr[i];
            for (int j = i; j >=0 ; j--) {
    
    
                if(j>0&&arr[j-1]>temp)
                {
    
    
                    arr[j]=arr[j-1];

            }else {
    
    
                    arr[j]=temp;
                    break;
                }

        }
    }

猜你喜欢

转载自blog.csdn.net/weixin_43889487/article/details/121652613