Skip to content

Commit 2ba9666

Browse files
committed
update
1 parent 0c1ec54 commit 2ba9666

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/sortingAlgorithm/README.md

+7-4
Original file line numberDiff line numberDiff line change
@@ -190,10 +190,10 @@ public void bubbleSort(int[] a,int n){
190190
在程序中使用了三重循环嵌套。最外层的循环用来分解数组元素为多个序列,每次比较两数的间距,直到其值为0就结束循环。下面一层循环按设置的间距r,分别比较对应的数组元素。在该循环中使用插入排序法对指定间距的元素进行排序。
191191

192192
完整示例代码:[shell.java](./shell.java)
193-
## 合并排序
194-
合并排序(Merge Sort)算法就是将多个有序数据表合并成一个有序数据表。如果参与合并的只有两个有序表,则称为二路合并。对于一个原始的待排序序列,往往可以通过分割的方法来归结为多路合并排序
193+
## 归并排序
194+
归并排序(Merge Sort)算法就是将多个有序数据表归并成一个有序数据表。如果参与归并的只有两个有序表,则称为二路归并。对于一个原始的待排序序列,往往可以通过分割的方法来归结为多路归并排序
195195

196-
一个待排序的原始数据序列进行合并排序的基本思路是,首先将含有n个结点的待排序数据序列看作由n个长度为1的有序子表组成,将其依次两两合并,得到长度为4的若干有序子表······,重复上述过程,一直到最后的子表长度为n,从而完成排序过程。
196+
一个待排序的原始数据序列进行归并排序的基本思路是,首先将含有n个结点的待排序数据序列看作由n个长度为1的有序子表组成,将其依次两两归并,得到长度为4的若干有序子表······,重复上述过程,一直到最后的子表长度为n,从而完成排序过程。
197197

198198
# 算法时间复杂度分析
199199
- 冒泡排序算法:冒泡排序中,存在二层循环遍历,所以平均时间复杂度为O(n²),最坏情况下的时间复杂度为O(n²);
@@ -202,4 +202,7 @@ public void bubbleSort(int[] a,int n){
202202
- 堆排序算法:从堆中,一次堆排序挑选最小(或最大)元素的时间复杂度为O(logn),一共要进行n次堆排序得到有序队列,所以平均时间复杂度为O(nlogn),最坏情况下的时间复杂度为O(nlogn);
203203
- 插入排序算法:插入排序中,两层循环,第一层遍历n个元素,第二层遍历在已排序队列中逐一向前比较,找到合适的位置插入,所以平均时间复杂度为O(n²),最坏情况下的时间复杂度为O(n²);
204204
- 折半插入排序算法:在插入排序的基础上进行优化,在第二层遍历在已排序队列中通过二分查找的方式,找到合适的位置插入,所以平均时间复杂度为O(n²),最坏情况下的时间复杂度为O(n²);
205-
- 合并排序算法:均时间复杂度为O(nlogn),最坏情况下的时间复杂度为O(n²);:
205+
- Shell排序算法:在插入排序的基础上进行优化,通过先将队列进行n/2,n/4,n/8,...分组,时间复杂度为O(n½),再对每个小组分别进行插入排序,时间复杂度为O(n),所以平均时间复杂度将会缩减为O(n³/₂),最坏最坏情况下的时间复杂度为O(n²);:
206+
- 归并排序算法:平均时间复杂度为O(nlogn),最坏情况下的时间复杂度为O(nlogn);
207+
208+
[*****回到首页*****](https://github.com/yilong0722/Data-structure-and-algorithm-Java/#top)

0 commit comments

Comments
 (0)