加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

常用排序算法总结

发布时间:2019-09-17 23:24:57 所属栏目:建站 来源:阿里云云栖社区
导读:概述 在计算器科学与数学中,一个排序算法(英语:Sorting algorithm)是一种能将一串数据依照特定排序方式进行排列的一种算法。本文将总结几类常用的排序算法,包括冒泡排序、选择排序、插入排序、快速排序和归并排序,分别使用Java代码实现,简要使用图例

将待排序的数列分成若干个长度为1的子数列,然后将这些数列两两合并;得到若干个长度为2的有序数列,再将这些数列两两合并;得到若干个长度为4的有序数列,再将它们两两合并;直接合并成一个数列为止。

  • Java Code
  1. public class MergeSort { 
  2.  
  3.     private int[] array; 
  4.     private int[] tempMergArr; 
  5.     private int length; 
  6.  
  7.     public static void main(String a[]){ 
  8.  
  9.         int[] inputArr = {45,23,11,89,77,98,4,28,65,43}; 
  10.         MyMergeSort mms = new MyMergeSort(); 
  11.         mms.sort(inputArr); 
  12.         for(int i:inputArr){ 
  13.             System.out.print(i); 
  14.             System.out.print(" "); 
  15.         } 
  16.     } 
  17.  
  18.     public void sort(int inputArr[]) { 
  19.         this.array = inputArr; 
  20.         this.length = inputArr.length; 
  21.         this.tempMergArr = new int[length]; 
  22.         doMergeSort(0, length - 1); 
  23.     } 
  24.  
  25.     private void doMergeSort(int lowerIndex, int higherIndex) { 
  26.  
  27.         if (lowerIndex < higherIndex) { 
  28.             int middle = lowerIndex + (higherIndex - lowerIndex) / 2; 
  29.             // Below step sorts the left side of the array 
  30.             doMergeSort(lowerIndex, middle); 
  31.             // Below step sorts the right side of the array 
  32.             doMergeSort(middle + 1, higherIndex); 
  33.             // Now merge both sides 
  34.             mergeParts(lowerIndex, middle, higherIndex); 
  35.         } 
  36.     } 
  37.  
  38.     private void mergeParts(int lowerIndex, int middle, int higherIndex) { 
  39.  
  40.         for (int i = lowerIndex; i <= higherIndex; i++) { 
  41.             tempMergArr[i] = array[i]; 
  42.         } 
  43.         int i = lowerIndex; 
  44.         int j = middle + 1; 
  45.         int k = lowerIndex; 
  46.         while (i <= middle && j <= higherIndex) { 
  47.             if (tempMergArr[i] <= tempMergArr[j]) { 
  48.                 array[k] = tempMergArr[i]; 
  49.                 i++; 
  50.             } else { 
  51.                 array[k] = tempMergArr[j]; 
  52.                 j++; 
  53.             } 
  54.             k++; 
  55.         } 
  56.         while (i <= middle) { 
  57.             array[k] = tempMergArr[i]; 
  58.             k++; 
  59.             i++; 
  60.         } 
  61.     } 

常见排序算法复杂度

常用排序算法总结

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读