• 数据结构算法中的 几种排序方法


    package sort;

    public class SortAll {

     /*
      * 冒泡排序,选择排序,插入排序,希尔(Shell)排序 Java的实现
      * @param args
      */
     public static void main(String[] args) {
      // TODO Auto-generated method stub
          int [] i={1, 5, 6, 12, 4, 9, 3, 23, 39, 403, 596, 87 };
          System.out.println("---冒泡排序的结果:");
          maopao(i);
          System.out.println();
          System.out.println("----选择排序的结果:");
       xuanZe(i);
       System.out.println();
       System.out.println("----插入排序的结果:");
      chaRu(i);
       System.out.println();
       System.out.println("----希尔(Shell)排序的结果:");
       shell(i);
     }
     //冒泡排序:最大的元素就被移到了数列的末尾。如此反复这个过程n-1次后,整个数列就排序好了
     public static void maopao(int []x)
     {
      for(int i=0;i < x.length;i++){
        for(int j=i+1;j<x.length;j++){
          if (x[i]>x[j]){
           int temp=x[i];
           x[i]=x[j];
           x[j]=temp;
          }
        }
      }
      for (int i:x){
       System.out.print(i+" ");
      }
     }
     
       //选择排序 :
     /*找到一个极端值后放到数组的头或尾。

        区别就在于选择排序用一个变量来记录找到的最小值,并且找到后只交换一次
     */

       public static void xuanZe(int []y){
       
       for(int i = 0;i <y.length;i++){
        int lowerIndex=i;
        for(int j=i+1;j<y.length;j++){
         if(y[j]<y[lowerIndex]){
          lowerIndex=j;
         }
        }
        //交换
        int temp=y[i];
        y[i]=y[lowerIndex];
        y[lowerIndex]=temp;
       }
       for (int i:y){
       System.out.print(i+" ");
      }
       }
       //插入排序:
      
       public static void chaRu(int []x){
     // i从一开始,因为第一个数已经是排好序的啦
      //通过不断交换来排序
        for(int i=1;i<x.length;i++)
         for(int j=i;j>0;j--){
          if(x[j]< x[j-1]){
           int temp=x[j];
           x[j]=x[j-1];
           x[j-1]=temp;
          }
         }
        for(int i:x){
         System.out.print(i+" ");
        }   
       }
       //希尔排序:分成若干的小组,在组内进行插入排序
       public static void shell(int []x){
        //分组
        for(int increment=x.length/2;increment>0;increment=increment/2){
      //每个组内:
         for(int i=increment;i<x.length;i++){
          int temp=x[i];
          int j=0;
          for(j=i;j>=increment;j-=increment){
           if(temp<x[j-increment]){
            x[j]=x[j-increment];
           }else{
            break;
           }
          }
          x[j]=temp;
         }   
        }
        for(int i:x){
          System.out.print(i+" ");
         }    
       }
    }

  • 相关阅读:
    http 学习 1-1 chapter1-HTTP概述
    2048 游戏实现原理
    safari 日期对象新建new Date( timeStr ) 参数TimeStr格式
    js
    js 常见弹出框学习
    JS引入CSS文件
    JAVA 遍历文件夹下的所有文件(递归调用和非递归调用)
    java复制文件 转
    Map键值对,一种思路
    写入excel表格数据
  • 原文地址:https://www.cnblogs.com/lhxue/p/3014956.html
Copyright © 2020-2023  润新知