排序算法
静沐暖阳
这个作者很懒,什么都没留下…
展开
-
排序算法总结(一)
排序方法分为两大类:内部排序和外部排序 内部排序分为插入排序、选择排序、交换排序、归并排序、基数排序 1.插入排序 将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。 此处采用不用哨兵位的方法: void InsertSort(int arr[],int len) { for(int i=1;ilen;i++) //默认第一个元素已经排好序 {原创 2017-09-12 21:19:19 · 163 阅读 · 0 评论 -
八大排序之 快速排序
快速排序 思想:选择一个基准,下标h指向最后一个元素,下标l指向第一个元素。下标h从后向前遍历,比基准小的数字放在前面,下标l从前向后遍历,比基准大的放后面。重复以上操作,直到 l、h相遇,相遇点即为基准要放的位置。直到只剩一个数字的时候,停止划分。 时间复杂度:平均O(nlogn) 最好 O(nlogn) 最坏O(n^2) 空间复杂度:O(logn) 稳定性:不稳定 优点:越无序越快...原创 2018-08-05 09:09:54 · 464 阅读 · 0 评论 -
八大排序之 归并 直接插入 希尔排序
(1)归并排序 思想:先让一个元素有序,再让两个元素有序,再让4个元素有序……,最后总会全部有序。 时间复杂度:平均 O(nlogn) 最好 O( nlogn) 最坏 O(nlogn) 空间复杂度:O(n) 稳定性:稳定 void Merge(int *arr,int *tmp,int left,int mid,int right) { int i=left;//第一个归...原创 2018-08-05 16:21:38 · 209 阅读 · 0 评论