常用排序(java代码实现)

  1 package com.sort.test;
  2 
  3 import java.util.Arrays;
  4 import java.util.Scanner;
  5 
  6 /**
  7  * @author MJC
  8  *2017年12月20日
  9  * 下午7:50:10
 10  */
 11 
 12 
 13 public class BubbleSort {
 14     public static void main(String[] args) {
 15         //int[] arr={8, 7, 11, 25,16,5,2,6,54,32,1};
 16         int[] arr={5,3,0,2,6,9,1};
 17         
 18         int[] result = new int[6];
 19         result=bubbleSorttest(6,arr);
 20         System.out.print("冒泡排序=========");
 21         for (int i = 0; i < result.length; i++) {
 22             System.out.print(result[i]+",");
 23         }
 24         System.out.println();
 25         result=selectionSort(6,arr);
 26         System.out.print("直接选择排序======");
 27         for (int i = 0; i < result.length; i++) {
 28             System.out.print(result[i]+",");
 29         }
 30         
 31         System.out.println();
 32         result=selectionSort(6,arr);
 33         System.out.print("直接选择排序_改进版=");
 34         for (int i = 0; i < result.length; i++) {
 35             System.out.print(result[i]+",");
 36         }
 37         
 38         System.out.println();
 39         result=insertionSort(6,arr);
 40         System.out.print("直接插入排序======");
 41         for (int i = 0; i < result.length; i++) {
 42             System.out.print(result[i]+",");
 43         }
 44         System.out.println();
 45         Arrays.sort(arr);
 46         System.out.print("Arrays工具类排序==");
 47         for (int i = 0; i < arr.length; i++) {
 48             System.out.print(arr[i]+",");
 49         }
 50         
 51         
 52     }
 53     /*
 54      * 冒泡排序
 55      */
 56     public static int[] bubbleSorttest(int n,int[] arr){
 57         
 58         for(int i=0;i<arr.length;i++){
 59             for(int j=0;j<arr.length-i-1;j++){
 60                 if(arr[j]>arr[j+1]){
 61                     int temp=arr[j];
 62                     arr[j]=arr[j+1];
 63                     arr[j+1]=temp;
 64                 }
 65             }
 66         }
 67         return arr;
 68     }
 69     
 70     
 71     /*
 72      * 选择排序
 73      */
 74     public static int[] selectionSort(int n,int[] arr){
 75         for(int i=0;i<arr.length;i++){
 76             for(int j=i;j<arr.length;j++){
 77                 if(arr[i]>arr[j]){
 78                     int temp=arr[i];
 79                     arr[i]=arr[j];
 80                     arr[j]=temp;
 81                 }
 82             }
 83         }
 84         return arr;
 85     }
 86     
 87     /*
 88      * 直接选择排序-改进
 89      */
 90     public static int[] selectionSort2(int n,int[] arr){
 91         for(int i=0;i<arr.length;i++){
 92             int minNum=i;
 93             for(int j=i;j<arr.length;j++){
 94                 if(arr[i]>arr[j]){
 95                     minNum=j;
 96                 }
 97             }
 98             
 99             if(minNum!=i){
100                 int temp=arr[i];
101                 arr[i]=arr[minNum];
102                 arr[minNum]=temp;
103             }
104         }
105         return arr;
106     }
107     
108     /*
109      * 直接插入排序
110      */
111     public static int[] insertionSort(int n,int[] arr){
112          for (int i = 1; i < n; i++)         // 类似抓扑克牌排序
113             {
114                  //当前正要排序的数
115                 int get = arr[i];                 // 右手抓到一张扑克牌
116                 //已经排好序的数
117                 int j = i - 1;                  // 拿在左手上的牌总是排序好的
118                 while (j >= 0 &&arr[j] > get)    // 将抓到的牌与手牌从右向左进行比较
119                 {
120                     arr[j + 1] = arr[j];            // 如果该手牌比抓到的牌大,就将其右移
121                     j--;
122                 }
123                 //不明白为啥没有下面这句也对
124                 arr[j + 1] = get; // 直到该手牌比抓到的牌小(或二者相等),将抓到的牌插入到该手牌右边(相等元素的相对次序未变,所以插入排序是稳定的)
125             }
126         return arr;
127     }
128 }

纸上学来终觉浅,觉知此事需躬行
原文地址:https://www.cnblogs.com/dreamHighMjc/p/8433011.html