zoukankan      html  css  js  c++  java
  • Java常用排序

      1 /**
      2  * Java常用排序
      3  * @author LiTaiQing
      4  *
      5  */
      6 public class SortTest {
      7     
      8     /*
      9      * 直接插入排序
     10      * 基本思想:
     11      *         在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,
     12      *         现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。
     13      *         如此反复循环,直到全部排好顺序
     14      */
     15     public static void insertSort(int[] arr){
     16         for(int i = 1; i < arr.length; i++){
     17             int j = i -1;
     18             for(;j > 0 && arr[i] < arr[j];j--){
     19                 arr[j+1] = arr[j];
     20             }
     21             arr[j+1] = arr[i];
     22         }
     23     }
     24     
     25     /*
     26      * 简单快速排序
     27      * 基本思想:
     28      *         在要排序的一组数中,选出最小的一个数与第一个位置的数交换;
     29      *         然后在剩下的数当中再找最小的与第二个位置的数交换,
     30      *         如此循环到倒数第二个数和最后一个数比较为止。
     31      */
     32     public static void selectSort(int[] arr){
     33         for(int i = 0; i < arr.length - 1; i++){
     34             for(int j = i + 1;j < arr.length ; j++){
     35                 if(arr[i] > arr[j]){
     36                     arr[i] ^= arr[j];
     37                     arr[j] ^= arr[i];
     38                     arr[i] ^= arr[j];
     39                 }
     40             }
     41         }
     42     }
     43     
     44     /*
     45      * 冒泡排序
     46      * 基本思想:
     47      *         在要排序的一组数中,对当前还未排好序的范围内的全部数,
     48      *         自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。
     49      *         即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
     50      */
     51     public static void bubbleSort(int[] arr){
     52         for(int i = 0; i < arr.length - 1; i++){
     53             for(int j = 0; j < arr.length - 1 - i; j++){
     54                 if(arr[j] > arr[j+1]){
     55                     arr[j] += arr[j+1];
     56                     arr[j+1] = arr[j] - arr[j+1];
     57                     arr[j] -= arr[j+1];
     58                 }
     59             }
     60         }
     61     }
     62     
     63     /*
     64      * 希尔排序(最小增量排序)
     65      * 基本思想:
     66      *         算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,
     67      *         每组中记录的下标相差d.对每组中全部元素进行直接插入排序,
     68      *         然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。
     69      *         当增量减到1时,进行直接插入排序后,排序完成。
     70      */
     71     public static void shellSort(int[] arr){
     72         int j = 0;  
     73         int temp = 0;  
     74         for (int increment = arr.length / 2; increment > 0; increment /= 2) {  
     75             for (int i = increment; i < arr.length; i++) {  
     76                 temp = arr[i];  
     77                 for (j = i; j >= increment; j -= increment) {  
     78                     if(temp > arr[j - increment]){  
     79                         arr[j] = arr[j - increment];  
     80                     }else{  
     81                         break;  
     82                     }  
     83                 }   
     84                 arr[j] = temp;  
     85             }  
     86         }  
     87     }
     88     
     89     /*
     90      * 输出
     91      */
     92     public static void out(int[] arr){
     93         System.out.print("[");
     94         for(int i =0; i < arr.length - 2; i++){
     95             System.out.print(arr[i]+",");
     96         }
     97         System.out.println(arr[arr.length-1]+"]");
     98     }
     99     
    100 }
  • 相关阅读:
    计算机基础-day1
    Day3:Spring-JDBC、事务管理
    Day2:Spring-AOP
    Android------Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER
    Day1:Spring-IoC、DI
    Spring MVC的一例低级错误:Element 'mvc:annotation-driven' must have no character or element information item [children]
    Java阶段小总结
    Day20:DOM(Document Object Model)
    Day13:IO流(补充内容:特殊流对象)
    Android自学路线
  • 原文地址:https://www.cnblogs.com/litaiqing/p/4766233.html
Copyright © 2011-2022 走看看