• 常用排序(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 }

    纸上学来终觉浅,觉知此事需躬行
  • 相关阅读:
    面向对象的测试用例设计有几种方法?如何实现?
    html5直接调用手机相机照相/录像
    关于ionic2在IOS上点击延迟的问题
    vue项目使用html5+ barcode扫码在苹果遇到的问题以及自己的解决方法
    vue设置多个入口
    把项目中的vant UI组件升级
    记录axios在IOS上不能发送的问题
    getElementsByClassName兼容 封装
    记录vue用 html5+做移动APP 用barcode做扫一扫功能时安卓 的bug(黑屏、错位等等)和解决方法
    JS的事件委托
  • 原文地址:https://www.cnblogs.com/dreamHighMjc/p/8433011.html
Copyright © 2020-2023  润新知