堆排序可以作为实时排序,是原址排序,不需要额外的空间,时间复杂度是O(nlgn),最好最坏平均情况都是这个,但是是不稳定排序,下面是C语言实现的代码。。
//为了简化编程,堆数组元素中的第一个位置不使用。
struct heap {
int size;
int *arr;
} h;
void max_heapify(struct heap * h, int p)
{
...
分类:
编程语言 时间:
2015-08-03 01:17:47
阅读次数:
170
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
/*
* 单链表的插入排序, 插入排序是一种稳定排序
*/
class Solution7 {
public:
ListNode* insertionSortList(ListNod...
分类:
编程语言 时间:
2015-08-02 21:38:44
阅读次数:
169
快速排序也是典型的分治策略实现,与归并排序不同,快排的关键部分在于 分 也就是partition部分,快排平均时间复杂度是O(nlgn),最差时间是O(n^2),属于不稳定排序
下面是快排的C语言实现。
//p, r分别是数组中元素的下标
int partition(int A[], int p, int r)
{
int i, j;
i = p - 1;
f...
分类:
编程语言 时间:
2015-08-01 22:06:35
阅读次数:
226
归并排序典型的分治策略的体现,时间复杂度是O(nlgn), 空间复杂度是O(n).属于稳定排序。
下面是C语言实现代码。
#define MAX 10000000
//p, q, r是均是元素的下标
void merge(int A[], int p, int q, int r)
{
int n1 = q - p + 1;
int n2 = r - q;
int...
分类:
编程语言 时间:
2015-08-01 20:37:03
阅读次数:
145
1 在一个单链表中,若p所指的结点不是最后结点,在p所指结点之后插进s所指结点,则应执行操纵()
【解析】
s->next=p->next;p->next=s
2 在下列排序方法中,不稳定的方法有()
【解析】
不稳定排序的意思是在排序过程中,相等的两个数比较之后不会改变其原来的位置,即不需要交换。
常见的稳定排序有:
冒泡排序,插入排序,归并排序,基数排序。
常见的不稳定排序...
分类:
其他好文 时间:
2015-08-01 18:58:30
阅读次数:
147
转自:http://blog.csdn.net/zzzmmmkkk/article/details/4266888/所以自己总结了一下,首先看sort函数见下表:函数名功能描述sort对给定区间所有元素进行排序stable_sort对给定区间所有元素进行稳定排序partial_sort对给定区间所有...
分类:
编程语言 时间:
2015-07-28 17:25:37
阅读次数:
142
题意:
输入m个长度为n的DNA序列,把他们按照逆序数从小到大稳定排序输出。
PS:“稳定排序”就是当序列中出现A1==A2时,排序前后A1与A2的相对位置不发生改变。
思路:裸归并排序了 不懂得可以参考下http://blog.csdn.net/morewindows/article/details/6678165/ 但是他的代码写错了!后来我按照理解自己写了一个,测了一下...
分类:
编程语言 时间:
2015-07-27 19:07:24
阅读次数:
179
按逆序数从小到大排序。需要稳定排序。然而依然可以快排#include #include #include using namespace std;const int N = 55;const int M = 104;char str[M][N];struct point{ int num, ...
分类:
其他好文 时间:
2015-07-07 22:36:31
阅读次数:
157
题目连接http://acm.hdu.edu.cn/showproblem.php?pid=1872稳定排序Description大家都知道,快速排序是不稳定的排序方法。如果对于数组中出现的任意a[i],a[j](i_ 2 #include 3 #include 4 #include 5 #incl...
分类:
编程语言 时间:
2015-06-26 19:43:03
阅读次数:
156
归并排序:时间复杂度为O(nlogn) 这是该算法中最好、最坏和平均的时间性能。空间复杂度为 O(n)归并排序比较占用内存,但却是一种效率高且稳定的算法。速度仅次于快速排序,为稳定排序算法,一般用于对总体无序,但是各子项相对有序的数列。具体思路是,在归并的过程中计算每个小区间的逆序对数,进而计算出大...
分类:
编程语言 时间:
2015-06-18 21:26:54
阅读次数:
136