插入排序 

   直接插入排序的基本思想是:顺序地把待排序的数据元素按其值的大小插入到已排序数据元素子集合的适当位置。子集合的数据元素个数从只有一个数据元素开始逐次增大。当子集合大小最终和集合大小相同时排序完毕。

//插入排序算法
public class InsertSortDemo {

    public static void insertSort(int[] arr)
    {
          
        for(int i=1;i<arr.length;i++)
        {
            for(int j=0;j<i;j++)
            {
                if(arr[j]>arr[i])
                {
                  int temp = arr[i];
                  //向后移动元素
                  for(int k=i;k>j;k--)
                  {
                      arr[k]=arr[k-1];
                  }
                  arr[j] = temp;  
                }
                
            }
        }
    
    }
    
    public static void print(int[] arr)
    {
        for(int i=0;i<arr.length;i++)
        {
            System.out.print(arr[i]+" ");
        }
        System.out.println();
    }
    
    public static void main(String[] args) {
      
        int[] arr = {23,12,10,33,56,8,4,17,29,43};
        
        InsertSortDemo.print(arr);
        
        System.out.println("--------排序之后----------");
        InsertSortDemo.insertSort(arr);
        
        InsertSortDemo.print(arr);
    }

}

选择排序

      选择排序的基本思想是:每次从待排序的数据元素集合中选取最小(或最大)的数据元素放到数据元素集合的最前(或最后),数据元素集合不断缩小,当数据元素集合为空时排序过程结束。常用的选择排序有直接选择排序和堆排序两种。堆排序是一种基于完全二叉树的排序。

//选择排序算法
public class SelectSortDemo {
    
    public static void selectSort(int[] arr)
    {
        for(int i=0;i<arr.length-1;i++)
        {
            int min = arr[i];
            int index = i;
            for(int j=i+1;j<arr.length;j++)
            {
                if(arr[j]<min)
                {
                    min = arr[j];
                    index = j;
                }
            }
            if(index!=i)
            {
                int temp;
                temp = arr[i];
                arr[i]=arr[index];
                arr[index]=temp;
            }
            
        }
        
    }
    
    
    public static void print(int[] arr)
    {
        for(int i=0;i<arr.length;i++)
        {
            System.out.print(arr[i]+" ");
        }
        System.out.println();
    }
    
    public static void main(String[] args) {
        
        int[] arr = {23,12,10,33,56,8,4,17,29,43};
        SelectSortDemo.print(arr);
        
        System.out.println("--------排序之后---------");
        SelectSortDemo.selectSort(arr);
        SelectSortDemo.print(arr);
        
    }

}

交换排序

    冒泡排序的基本思想是:设数组a中存放了n个数据元素,循环进行n-1趟如下的排序过程:第1趟时,依次比较相临两个数据元素a[i]和a[i+1](i = 0,1,2,…,n-2),若为逆序,即a[i]>a[i+1],则交换两个数据元素,否则不交换,这样数值最大的数据元素将被放置在a[n-1]中。第2趟时,循环次数减1,即数据元素个数为n-1,操作方法和第1趟的类似,这样整个n个数据元素集合中数值次大的数据元素将被放置在a[n-2]中。当第n-1趟结束时,整个n个数据元素集合中次小的数据元素将被放置在a[1]中,a[0]中放置了最小的数据元素。

//冒泡排序算法
public class SwapSortDemo {
   
    
    public static void swapSort(int[] arr)
    {
        for(int i=arr.length-2;i>=0;i--)
        {
            for(int j=0;j<=i;j++)
            {
                if(arr[j]>arr[j+1])
                {
                    int temp;
                    temp = arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        
    }
    
    public static void print(int[] arr)
    {
        for(int i=0;i<arr.length;i++)
        {
            System.out.print(arr[i]+" ");
        }
        System.out.println();
    }
    public static void main(String[] args) {
     
        int[] arr = {23,12,10,33,56,8,4,17,29,43};
        
        SwapSortDemo.print(arr);
        System.out.println("--------排序之后---------");
        SwapSortDemo.swapSort(arr);
        SwapSortDemo.print(arr);
    }

}

wKioL1X0Il_wgf64AADeGRq1uXE030.jpg

个别转载