十大排序算法

发布时间 2023-08-30 16:56:35作者: 无聊的飞熊

(前言:嗯,之前是学过一点排序算法的,比如说快排,归并,插入排序,冒泡排序什么的,但是有好多学校也没教,自己学的也不扎实,这次自己一边慢慢写,一边教自己一边,努力把这些搞懂,但我肯定一天是写不完的,所以要多等)

1 算法分类

1.1 比较排序

graph TD;
比较排序-->交换排序;
比较排序-->插入排序;
比较排序-->选择排序;
比较排序-->归并排序;
交换排序-->冒泡排序;
交换排序-->排序排序;
插入排序-->简单插入排序;
插入排序-->希尔排序;
选择排序-->简单选择排序;
选择排序-->堆排序;
归并排序-->二路归并排序;
归并排序-->多路归并排序;

1.2 非比较排序

graph TD;
非比较排序-->计数排序;
非比较排序-->桶排序;
非比较排序-->计数排序;

复杂度

2023年08月30日 16:50:20 续

2 十大排序算法

2.1 冒泡排序

就不搞那些虚的了,写的前面那些也要不都是百度贴的
冒泡排序,我的印象里的就是两两一次对比换顺序,时间复杂度好高,思想倒是挺简单的,但是代码要让我自己写也不一定写多好,但别的文章里的图都挺好的,还总出现,所以可以直接引用一波
啊,对时间复杂度还是要说一下的
时间复杂度: 最佳情况:T(n) = O(n) 最差情况:T(n) = O(n2) 平均情况:T(n) = O(n2)

//啊,如我所说,很简单
   public static int[] bubbleSort(int[] array) {
       if (array.length == 0)
           return array;
       for (int i = 0; i < array.length; i++)
           for (int j = 0; j < array.length - 1 - i; j++)
               if (array[j + 1] < array[j]) {
                   int temp = array[j + 1];
                   array[j + 1] = array[j];
                   array[j] = temp;
               }
       return array;
   }

2.2 选择排序

先贴个图