zoukankan      html  css  js  c++  java
  • 各种排序算法

    基础才是最重要的, 好久不写排序了,今天写了一下还是各种报错。。。。

    要养成习惯,每天至少做一道算法题

     1 //复习各种排序
     2 public class SortApp {
     3 
     4     public static void main(String[] args) {
     5         int[] a = {5,23,7,18,56,2,36,5,3,9,6,4,1};
     6         SortApp app = new SortApp();
     7         //app.quickSort(a);
     8         //app.selectSort(a);
     9         //app.insertSort(a);
    10         app.bubbleSort(a);
    11         app.display(a);
    12     }
    13     
    14     //快速
    15     void quickSort(int[] a){
    16         quickSort(a, 0, a.length - 1);
    17     }
    18     
    19     private void quickSort(int[] a, int left, int right){
    20         if(left >= right) return;
    21         int pivot = left;
    22         int i = left, j = right + 1;
    23         
    24         while(i<j){
    25             while(a[++i] < a[pivot] && i < right);
    26             while(a[--j] > a[pivot] && j > 0);
    27             if(i<j)swap(a, i, j);
    28         }
    29         swap(a,pivot, j);
    30         
    31         quickSort(a, left, j-1);
    32         quickSort(a, j+1, right);
    33     }
    34     
    35     //冒泡
    36     void bubbleSort(int[] a){
    37         for(int i = 0; i < a.length; i++){
    38             for(int j = 1; j < a.length - i; j++){
    39                 if(a[j-1] >= a[j]){
    40                     swap(a,j-1,j);
    41                 }
    42             }
    43         }
    44     }
    45     
    46     //插入
    47     void insertSort(int[] a){
    48         for(int i = 1; i < a.length; i++){
    49             int current = a[i];
    50             //pointer for the previous element of i
    51             int j = i-1;
    52             while(j>=0 && a[j] > current){
    53                 a[j+1] = a[j];
    54                 j--;
    55             }
    56             
    57             //now j points to the element which is smaller than a[i]
    58             a[j+1] = current;
    59         }
    60     }
    61     
    62     //选择
    63     void selectSort(int[] a){
    64         for(int i = 0; i < a.length; i++){
    65             int min = i;
    66             for(int j = i+1; j < a.length; j++){
    67                 if(a[j] < a[min]) min = j;
    68             }
    69             swap(a, i, min);
    70         }
    71     }
    72     
    73     private void swap(int[] a, int i, int j){
    74         int tmp = a[i];
    75         a[i] = a[j];
    76         a[j] = tmp;
    77     }
    78     
    79     private void display(int[] a){
    80         for(int i: a){
    81             System.out.print(" " + i);
    82         }
    83         System.out.println("");
    84     }
    85 }
  • 相关阅读:
    《深入浅出WPF》4.0x名称空间
    《深入浅出WPF》3.0 XAML语法
    DataGridview 自动切换到 下一行
    C# 生成条形码图片,效果不错
    将DataTable 导出为csv
    DataTable,DataGridVIew转换到xls 方法 (转)
    NPOI读取Excel 数据 转。。。
    修改 字段大小
    VC
    统计每天 指定 时间段内 的数据
  • 原文地址:https://www.cnblogs.com/aalex/p/4981280.html
Copyright © 2011-2022 走看看