一般用的都是快速排序,最好、正常和平均时间复杂度都为O(nlog2n),2为底的对数,最坏情况就是数据已经或者近乎有序,当然就是O(n^2)了
include<stdlib.h>/*含malloc()的头文件*/include<stdio.h>//①定义链表数据结构structnode{intnum;structnode*next;};//函数声明structnode*creat();voidprint();main(){stru...
从程序逻辑上来看,你的程序是没有问题的。有可能是你输入的数据已经是从小到大排好序了的,尝试着输入无序的数据,看看排序结果。
我在我的电脑上编译执行了,程序没有错,所以应该是你的电脑环境有问题。你可以单步调试你的程序,看是哪一行出错了。
另外申请一个存储空间vector2,将vector复制到vector2,然后对vector2进行sort;
qsort适合用来排序原生的数组。用qsort(&rooms[0],……)可以,是因为vector的内部实现是一个整块的内存,&rooms[0]相当于取出了这块内存的首地址。用sort(rooms.begin(),...)才是STL的做法...
//插入排序实现:voidSortInsert::insertSort(vector<int>::iteratorbegin,vector<int>::iteratorend){for(vector<int>::iteratori=begin+1;i<end;++i){for(vector<int>::iteratorj=i;...
你好,用comparable接口我帮你写了个例子:packagevectorsort;publicclassPointimplementsComparable<Point>{privatefloatx;privatefloaty;publicPoint(floatx,floaty){super();this.x=x;this.y=y...
都是冒泡排序的话,时间复杂度是相同的,一个数量级。非要说谁快,自然是vector。因为链表还要操纵指针,vector直接操纵数据。
回intn1=q-p+1;intn2=r-q;intL[n1],R[n2];数组必现用常量,这样是错的,请改为动态数组:int*L=newint[n1],*R=newint[n2];