快速排序思想:快速排序的思想巧秒,利用分治的思想,可以极快排序数组。其基本思想分两步:
1. 给你一个数组,让你选择数组中的任意一个数作为基数,然后让数组中所有比基数小的数都放在放在基数的左边,所有比基数大的数放在基数的右边。
2. 将刚才基数的位置作为中点,将数组中基数左边的所有元素做1操作,将基数右边的所有元素做1操作。
看到步骤2,就很容易想到这里面是递归调用的。所以我们的关键任务就是如...
分类:
编程语言 时间:
2015-05-09 15:05:48
阅读次数:
361
分析问题 问题只需要找到排序数组中某个数K的个数,由于已经是排序了,K一定是在一堆的,所以我们只需要找到第一个K的index1,然后找到最后一个K的index2就可以了 而寻找K的过程我们一般通过二分法查找,这样时间复杂度能降到logn 解决问题 我们通过二分法寻找k,如果中间的数小于k,那么在前半...
分类:
编程语言 时间:
2015-05-04 09:59:55
阅读次数:
160
转!http://blog.csdn.net/dabusideqiang/article/details/3827166111、求旋转数组的最小数字题目:输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。分析:数组的旋转:把一个数组最开始的若干个元素搬到数组的末尾。例如数组{3, 4, 5, ...
分类:
编程语言 时间:
2015-05-03 15:59:41
阅读次数:
498
题目:
统计一个数字在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4.
解法一:O(n)
顺序遍历
解法二:O(logn)
用二分查找,分别找出第一个3,和最后一个3的位置,然后计算个数。
#include
int GetFirstK(int* data,int length,int k,i...
分类:
编程语言 时间:
2015-05-02 23:26:23
阅读次数:
172
思想:
1.首先生成1到n的数组A
2.生成1到n^3的n个数的随机数组P
例如A= P=
3.对p数组进行从小到大的排序(利用快速排序),生成数组P1=
4.根据3中P1的顺序,生成随机数数组A1=
代码:
#include
#include
#include
//快速排序,平均时间复杂度o(nlog2n),最好为o(log2n),最坏为o(n2).是不稳定排序( 交换排序)...
分类:
编程语言 时间:
2015-04-28 18:37:43
阅读次数:
183
#include
using namespace std;
//输入一个已经按升序排序过的数组和一个数字,
//在数组中查找两个数,使得它们的和正好是输入的那个数字。
//要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。
//例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。
void Grial(int a[],int x,i...
分类:
编程语言 时间:
2015-04-26 00:04:17
阅读次数:
273
排序数组:$arr(1,43,54,62,21,66,32,78,36,76,39);
用四种排序算法进行排序
冒泡排序:(思路:对未排好序的数,从前往后两个数一次进行比较和调整,大的下沉,小的上升)
$arr=array(1,43,54,62,21,66,32,78,36,76,39);
function bubbleSort($arr)
...
分类:
编程语言 时间:
2015-04-19 21:25:37
阅读次数:
169
数组对象Array有一个Sort方法(点击查看Sort方法的实现),专门是用来排序的,请看下图如果我们想为自己的类添加一个排序,只需要继承IComparable接口,实现CompareTo方法就行;调用CompareTo方法内部实现对象的比较,通过返回值确定对象的顺序负数值,当前对象<参数对象正数值...
分类:
编程语言 时间:
2015-04-18 10:01:15
阅读次数:
140
#includeusing namespace std;#define MAX_SIZE 100//用于排序数组个数的最大值typedef struct { int r[MAX_SIZE+1];//用于存储要排序的数组 int length;//用于记录顺序表的长度}sqlist;//用于交换数组....
分类:
编程语言 时间:
2015-04-17 20:16:17
阅读次数:
135
#includeusing namespace std;#define MAX_SIZE 100//用于排序数组个数的最大值typedef struct { int r[MAX_SIZE+1];//用于存储要排序的数组 int length;//用于记录顺序表的长度}sqlist;//用于交换数组....
分类:
编程语言 时间:
2015-04-16 17:05:16
阅读次数:
213