java排序算法和选择算法

输入:[24,17,40,28,13,14,22,32,40,21,48,4,47,8,37,18]
输出:[4,8,13,14,17,18,21,22,24,28,32,27,40,40,47,48]
请分别使用插入排序算法和选择排序算法完成上述排序问题。

选择排序:

for (int j = 0; j < gas.length; j++) {
            for (int i = j+1; i < gas.length; i++) {
                if (gas[i] < gas[j]) {
                    int tem = gas[i];
                    gas[i] = gas[j];
                    gas[j] = tem;
                }
            }
        }

img

插入排序:

for (int i = 1; i < gas.length; i++) {
    for (int j = i; j >= 1; j--) {
        if (gas[j] < gas[j - 1]) {
            int tem = gas[j];
            gas[j] = gas[j - 1];
            gas[j - 1] = tem;
        }
    }
}

img

输出结果

img

插入排序

package ca;
 
import java.util.Arrays;
 
public class Insertion
{
    public static void main(String[] args) {
        int a[]={24,17,40,28,13,14,22,32,40,21,48,4,47,8,37,18};
        Insertion.sort(a);
        
    }
    public static void sort(int[] a)
    {
        //假设将a[]按升序排列
        for (int i=1;i<a.length;i++)
        {
        //将a[i]插入到a[i-1],a[i-2],a[i-3]……之中
            for(int j=i;j>0&&(a[j]<a[j-1]);j--)
            {
                int temp=a[j];
                a[j]=a[j-1];
                a[j-1]=temp;
            }
         }
            System.out.println(Arrays.toString(a));

    }
}

选择排序

package ca;
 
import java.util.Arrays;
 
/***
 * 选择排序
 * */
public class SelectionSort {
    public static void main(String[] args) {
        int[] a = { 24,17,40,28,13,14,22,32,40,21,48,4,47,8,37,18 };
        SelectionSort.selectionSort(a);
    }
 
    public static void selectionSort(int[] arr) {
        for (int i = 0; i < (arr.length - 1); i++) {
            //先假设每次循环时,最小数的索引为i
            int minIndex = i;
            //每一个元素都和剩下的未排序的元素比较
            int count =0;
            for (int j = i + 1; j < arr.length; j++) {
                count++;
                if (arr[j] < arr[minIndex]) { //寻找最小数
                    minIndex = j; //将最小数的索引保存
                }
            }
            //经过一轮循环,就可以找出第一个最小值的索引,然后把最小值放到i的位置
            swap(arr, i, minIndex);
        }
            System.out.println(Arrays.toString(arr));

    }
 
    private static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}