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

十大经典排序算法总结(含Java代码实现)

发布时间:2019-08-29 00:57:59 所属栏目:建站 来源:佚名
导读:副标题#e# 最近几天在研究排序算法,看了很多博客,发现网上有的文章中对排序算法解释的并不是很透彻,而且有很多代码都是错误的,例如有的文章中在桶排序算法中对每个桶进行排序直接使用了Collection.sort()函数,这样虽然能达到效果,但对于算法研究来讲

2.3 代码实现

  1. /** 
  2.  * 选择排序 
  3.  * @param array 
  4.  * @return 
  5.  */ 
  6.  public static int[] selectionSort(int[] array) { 
  7.  if (array.length == 0) 
  8.  return array; 
  9.  for (int i = 0; i < array.length; i++) { 
  10.  int minIndex = i; 
  11.  for (int j = i; j < array.length; j++) { 
  12.  if (array[j] < array[minIndex]) //找到最小的数 
  13.  minIndex = j; //将最小数的索引保存 
  14.  } 
  15.  int temp = array[minIndex]; 
  16.  array[minIndex] = array[i]; 
  17.  array[i] = temp; 
  18.  } 
  19.  return array; 
  20.  } 

2.4 算法分析

最佳情况:T(n) = O(n2) 最差情况:T(n) = O(n2) 平均情况:T(n) = O(n2)

3、插入排序(Insertion Sort)

插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。插入排序:直接插入排序

3.1 算法描述

  • 一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:
  • 从第一个元素开始,该元素可以认为已经被排序;
  • 取出下一个元素,在已经排序的元素序列中从后向前扫描;
  • 如果该元素(已排序)大于新元素,将该元素移到下一位置;
  • 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
  • 将新元素插入到该位置后;
  • 重复步骤2~5。

3.2 动图演示

十大经典排序算法最强总结(含JAVA代码实现)

3.2 代码实现

  1. /** 
  2.  * 插入排序 
  3.  * @param array 
  4.  * @return 
  5.  */ 
  6.  public static int[] insertionSort(int[] array) { 
  7.  if (array.length == 0) 
  8.  return array; 
  9.  int current; 
  10.  for (int i = 0; i < array.length - 1; i++) { 
  11.  current = array[i + 1]; 
  12.  int preIndex = i; 
  13.  while (preIndex >= 0 && current < array[preIndex]) { 
  14.  array[preIndex + 1] = array[preIndex]; 
  15.  preIndex--; 
  16.  } 
  17.  array[preIndex + 1] = current; 
  18.  } 
  19.  return array; 
  20.  } 

3.4 算法分析

最佳情况:T(n) = O(n) 最坏情况:T(n) = O(n2) 平均情况:T(n) = O(n2)

4、希尔排序(Shell Sort)

(编辑:西安站长网)

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

热点阅读