2016年6月12日

时间复杂度为O(N*N)的排序算法——插入排序

摘要: void insertSort(vector& nums,int start,int end){ int key; for(int j =1;j=0&&nums[i]>key;i--){ //由于上次循环结束j之前的数组保持有序,那么一旦找到num[i]<=key的情//况,i就不需要再遍历了 nums[i+1] = nums[... 阅读全文

posted @ 2016-06-12 17:22 时间的女儿 阅读(354) 评论(0) 推荐(0)

时间复杂度为O(N*logN)的排序算法——归并排序、快速排序、堆排序

摘要: 1、归并排序 使用分治法,先将元素拆分成最小的形式,然后两两合并。每次合并是将两个已经排好序的子数组进行合并。 但在进行数组合并时,需要将其拷贝到新申请的数组中,拷贝过程花费时间和额外的内存开销。 2、快速排序 随机快速排序不需要额外申请内存空间,随机选取pivot对数组进行划分,使左边元素小于pi 阅读全文

posted @ 2016-06-12 17:15 时间的女儿 阅读(1150) 评论(0) 推荐(0)

导航