直接上代码:void swap(int a[],int m,int n) { int temp = a[m]; a[m] = a[n]; a[n] = temp;}//开始的时候left是数组的起始位置0,right是数组最后一个元素的下标(这里是8)void quickSort(...
分类:
编程语言 时间:
2015-08-19 00:26:22
阅读次数:
123
题目就是让你求逆序数,用树状数组很简单,不过数据太大,要先进行离散化,将数据范围压缩到1~n以内。还有poj竟然不支持c++11,害得我lambda表达式编译错误。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#i...
分类:
编程语言 时间:
2015-08-17 14:10:03
阅读次数:
154
快速排序法:
public class Main {
public static void main(String[] args) {
int a[]={7,8,1,3,5};
new Main(a);
}
public Main(int[] a){
System.out.println("排序前:");
...
分类:
编程语言 时间:
2015-08-17 12:01:27
阅读次数:
123
1 void quickSort(int *arrays,int b,int e) 2 { 3 /*快速排序 */ 4 int i,j,key; 5 i=b; 6 j=e; 7 key = arrays[b]; 8 ...
分类:
编程语言 时间:
2015-08-15 13:28:45
阅读次数:
142
题意:求一个数列的冒泡排序的交换次数;参考:http://blog.csdn.net/suwei19870312/article/details/5293694思路: 一个数列的冒泡排序交换次数即为每个数对应的逆序对数之和,朴素的思想是两个for,O(N^2)复杂度; 数字范围是0-9999...
分类:
编程语言 时间:
2015-08-14 13:21:55
阅读次数:
123
树状数组,具体的说是 离散化+树状数组。这也是学习树状数组的第一题.
算法的大体流程就是:
1.先对输入的数组离散化,使得各个元素比较接近,而不是离散的,
2.接着,运用树状数组的标准操作来累计数组的逆序数。
算法详细解释:
1.解释为什么要有离散的这么一个过程?
刚开始以为999.999.999这么一个数字,对于int存储类型来说是足够了。...
分类:
编程语言 时间:
2015-08-12 19:29:01
阅读次数:
136
numpy.argsortnumpy.argsort(a,axis=-1,kind='quicksort',order=None)[source]Returns the indices that would sort an array.Perform an indirect sort along t...
分类:
编程语言 时间:
2015-08-10 23:49:33
阅读次数:
902
题目链接:http://poj.org/problem?id=2299题意就是求把数组按从小到大的顺序排列,每次只能交换相邻的两个数, 求至少交换了几次就是求逆序数用归并排序#include#include#include#define N 501000using namespace std;int...
分类:
编程语言 时间:
2015-08-09 20:26:33
阅读次数:
126
快速排序是在实践中最快的已知排序算法,它的平均运行时间是O(NlogN),该算法之所以特别的快,主要是由于非常精炼和高度优化的内部循环。它的最坏情形的性能为N^2.
快速排序由下列简单的四步组成:
1.如果S中元素个数是0或1,则返回。
2.取S中任以元素V,称之为枢纽元
3.将S分成俩个不相交的集合,前一个元素都小于V,后一个元素都大于V。
4.返回quicksort(S1)后,加上V...
分类:
编程语言 时间:
2015-08-09 12:37:39
阅读次数:
165
原题:DescriptionIn this problem, you have to analyze a particular sorting algorithm. The algorithm processes a sequence of n distinct integers by swappi...
分类:
其他好文 时间:
2015-08-07 21:45:37
阅读次数:
142