1 void my_sort(int l,int r) 2 { 3 int i=l,j=r,mid=a[(l+r)>>1]; 4 while (imid) 9 j--;10 if (il)18 my_sort(l,j);19 ...
分类:
其他好文 时间:
2014-08-25 14:48:44
阅读次数:
168
最近有些懒,好久没写代码了,现在写个快排练练手吧。public class QucikSort { //此处交换两个数 public static void swap(int a[],int low,int high) { int temp=a[low]; a[low]=a[high]; a[...
分类:
其他好文 时间:
2014-08-24 20:52:32
阅读次数:
179
快速排序是排序算法中最受青睐的算法之一,相对于堆排序和归并排序而言,即便具有相同的复杂度O(NlogN)。面对大数据而言,快排的效率也更高。一般而言,数据结构中的排序算法都是采取的双向指针法。在之前写的一篇博文《排序算法(初级版)之快排、归并、堆排序》中已经有过总结。这里就不再啰嗦了。本篇博文主要讲...
分类:
其他好文 时间:
2014-08-22 17:48:39
阅读次数:
388
这题前一阵子就看到了,一直没时间做,昨晚睡前想了想,要求n*log(n)以内的时间复杂度,第一时间想到的就是归并、快排和希尔排序(注:希尔排序时间为O(n^1.3),在数据量大于2的情况下小于n*log(n)),个人以为,链表的特性更适合归并,所以采用归并排序,实现的merge代码如下:publ.....
分类:
其他好文 时间:
2014-08-21 19:01:54
阅读次数:
226
题目:
选择排序法的概念简单,每次从未排序部份选一最小值,插入已排序部份的后端,其时间主要花费于在整个未排序部份寻找最小值,如果能让搜寻最小值的方式加 快,选择排序法的速率也就可以加快
Heap排序法让搜寻的路径由树根至最后一个树叶,而不是整个未排序部份,从而可以加快排序的过程,因而称之为改良的选择排序法。
整个堆排序的过程分建堆、取值、调整为新的堆三个过程。分别如下示:(以最小堆积树为例。关于HeapTree请参阅数据结构与算法)...
分类:
其他好文 时间:
2014-08-21 00:14:23
阅读次数:
193
相当于给出一组数列,然后选择前K大的数的算法。
本题没有给出详细的数据,故此就使用动态分配空间的方法了。
而这种题最好的算法就是使用快排思想,期望时间效率就是O(n)了。
最基本入门解决这种题的算法是直接排序了。那就成了水代码了。用上快排的思想才能体现出水平。
不过这种快排实在考的太多了,建议一定要掌握。
每次做这个算法的题目总会要调试一定时间的,每次都出现奇葩的错误。看来还是不够细心。...
分类:
其他好文 时间:
2014-08-20 21:08:12
阅读次数:
210
都是两种效率高而且常用的排序方法,今天来总结下。 先说快排: 首先,快速排序的时间复杂度为nlogn,其思想实质为分治法。而这分治法的基本思想为以下三点: 1.先从数列中取出一个基准数。 2.在分治的过程中,比这个基准数小的数全部放到这个基准数的左边,反之则放到右边。 3.然后再对由第...
分类:
其他好文 时间:
2014-08-17 02:22:30
阅读次数:
186
??
冒泡,快排都是常见的排序方法,这里介绍用头文件中的qsort函数排序。不过自己要先一个cmp函数。
#include//qsort的头文件
int a[100]={0,2,4,1,5,7,3,8,9}; //要排序的数组
struct Person//要排序的结构体
{
char num[20];
char name[100];
int score;
int sum;
}man...
分类:
其他好文 时间:
2014-08-13 22:39:27
阅读次数:
330
Problem Description:
Sort a linked list in O(n log n)
time using constant space complexity.
分析:对链表进行排序,思考排序算法时间复杂度为O(nlogn)的只有归并,快排和堆排序,应用到链表上的归并比较合适,这里利用快慢指针找到链表的中间节点,然后分别对两边递归归并排好序后将两边归并即可得到最终...
分类:
其他好文 时间:
2014-08-13 22:25:57
阅读次数:
234
Problem:
Sort a linked list in O(n log n)
time using constant space complexity.
解题思路:
首先,时间复杂度能达到O(nlgn)的排序算法,常见的有3种:堆排序、归并排序和快速排序,
而对于链表,用堆排序显然不太可能,所以,我们可用归并或者是快排.由于合并...
分类:
其他好文 时间:
2014-08-12 00:45:13
阅读次数:
217