• 快速、插入和冒泡排序(java版-代码篇)


     1 import java.util.Random;
     2 public class Test
     3 {
     4     public static void main(String[] arg){
     5         Random r=new Random();
     6         int[] arrs=new int[10];
     7         for(int i=0;i<arrs.length;i++){
     8             arrs[i]=r.nextInt(50);//随机生成排序数
     9         }
    10 
    11         show(arrs);//排序前
    12         System.out.println("");//换行
    13 
    14         quick_sort(arrs,0,arrs.length);//快速排序方法
    15         insert_sort(arrs);//插入排序
    16         bubbling_sort(arrs);//冒泡排序
    17 
    18         show(arrs);//排序后
    19 
    20 
    21     }
    22 
    23     //显示
    24     private static void show(int[] arrs){
    25         for(int i=0;i<arrs.length;i++){
    26             if(i<arrs.length-1){
    27                 System.out.print(arrs[i]+",");
    28             }else{
    29                 System.out.print(arrs[i]);
    30             }
    31         }
    32     }
    33 
    34     //快速排序
    35     private static void quick_sort(int[]arrs,int left,int right){
    36         if(left<right){
    37             int i=left;
    38             int j=right-1;
    39             int middle=arrs[(left+right)/2];
    40 
    41             while(true){
    42                 while(i<right && arrs[i]<middle){
    43                     i++;
    44                 }
    45                 while(j>0 && arrs[j]>middle){
    46                     j--;
    47                 }
    48                 if(i==j){
    49                     break;
    50                 }
    51                 
    52                 //设变量交换两数
    53                 int temp=0;
    54                 temp=arrs[i];
    55                 arrs[i]=arrs[j];
    56                 arrs[j]=temp;
    57 
    58                 if(arrs[i]==arrs[j]){
    59                     j--;
    60                 }
    61 
    62             }
    63             quick_sort(arrs,left,i);
    64             quick_sort(arrs,i+1,right);
    65         }
    66     }
    67 
    68     //插入排序
    69     private static void insert_sort(int[] arrs){
    70         for(int i=0;i<arrs.length;i++){
    71             for(int j=i;j>0&&arrs[j]<arrs[j-1];j--){
    72                 /*int temp=0;
    73                 temp=arrs[j];
    74                 arrs[j]=arrs[j-1];
    75                 arrs[j-1]=temp;*/
    76 
    77                 //不设变量的交换
    78                 arrs[j]=arrs[j]+arrs[j-1];
    79                 arrs[j-1]=arrs[j]-arrs[j-1];
    80                 arrs[j]=arrs[j]-arrs[j-1];
    81             }
    82         }
    83     }
    84     
    85     //冒泡排序
    86     private static void bubbling_sort(int[] arrs){
    87         for(int i=0;i<arrs.length;i++){
    88             for(int j=0;j<arrs.length;j++){
    89                 if(arrs[i]<arrs[j]){
    90                     arrs[i]=arrs[i]+arrs[j];
    91                     arrs[j]=arrs[i]-arrs[j];
    92                     arrs[i]=arrs[i]-arrs[j];
    93                 }
    94             }
    95         }
    96     }
    97 }

    运行结果:

  • 相关阅读:
    BNUOJ 12756 Social Holidaying(二分匹配)
    HDU 1114 Piggy-Bank(完全背包)
    HDU 2844 Coins (多重背包)
    HDU 2602 Bone Collector(01背包)
    HDU 1171 Big Event in HDU(01背包)
    HDU 2571 命运 (入门dp)
    HDU 1069 Monkey and Banana(最长递减子序列)
    HDU 1160 FatMouse's Speed (最长上升子序列)
    HDU 2594 KMP
    POJ 3783 Balls --扔鸡蛋问题 经典DP
  • 原文地址:https://www.cnblogs.com/comrd/p/3245280.html
Copyright © 2020-2023  润新知