题目描述 请设计一个复杂度为O(n)的算法,计算一个未排序数组中排序后相邻元素的最大差值。 给定一个整数数组A和数组的大小n,请返回最大差值。保证数组元素个数大于等于2小于等于500。 测试样例: [9,3,1,10],4 返回:6Solution 1: class MaxDivision { pu ...
分类:
其他好文 时间:
2016-04-04 20:59:17
阅读次数:
141
qsort 功 能: 使用快速排序例程进行排序 用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *)); 各参数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占 ...
分类:
其他好文 时间:
2016-03-29 16:31:53
阅读次数:
186
1.qsort函数: 原 型: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *)); 功 能: 使用快速排序例程进行排序 参 数: 1 待排序数组首地址 2 数组中待排序元素数量 3 ...
分类:
其他好文 时间:
2016-03-24 18:08:09
阅读次数:
157
数组方法:#include<stdio.h>#include<stdlib.h>voidbubble_sort(intarr[],intsz){inti=0;intj=0;for(j=0;j<sz-1;j++)//决定最终排序出来需要冒多少次{for(i=0;i<sz-1-j;i++)//决定一次冒泡需要比较多少次{if(arr[i]<arr[i+1]){inttmp=arr[i];arr[i]=arr[..
分类:
编程语言 时间:
2016-03-21 01:49:24
阅读次数:
262
功 能: 使用快速排序例程进行排序头文件:stdlib.h用 法: void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));参数: 1 待排序数组首地址2 数组中待排序元素数量3 各元素的占用...
分类:
其他好文 时间:
2016-03-16 22:28:58
阅读次数:
157
因为有序所以用二分法,分别找到第一个k和最后一个k的下标。时间O(logN)class Solution {public: int GetNumberOfK(vector data ,int k) { int num=0; int size=data.size(); if(size>0){ int ...
分类:
编程语言 时间:
2016-03-16 21:00:52
阅读次数:
268
假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2)。 你需要找到其中最小的元素。 数组中可能存在重复的元素。 解题 暴力直接线性查找 或者,线性找到第一个开始降序的位置对应的数 应该考虑二分法 递归 + 二分 二分
分类:
编程语言 时间:
2016-03-16 20:51:03
阅读次数:
169
原理采用分治的思想。主要分为三步:第一步,选择一个基数。第二步,将排序数组在分区的过程,将比该基数小的放在左边,比该基数大的放在右边。第三步,对左右分区执行同样的操作直到剩下一个数字。分析在最坏的情况下,也就是数据的划分不平衡,一部分是n-1个数字,另一部分没..
分类:
编程语言 时间:
2016-03-16 01:28:50
阅读次数:
161
原理将排序数组分成若干个子序列(这个取决于最初设定的步长值),然后对各个子序列之间进行直接插入排序,最后再缩小增量(即步长值)再进行插入排序,直到序列顺序基本稳定(步长足够小)时,对这种序列进行一次直接插入排序,在排序状况较好时,直接插入排序的效率还是挺高..
分类:
编程语言 时间:
2016-03-16 01:27:58
阅读次数:
181
原理将排序数组分成若干个子序列(这个取决于最初设定的步长值),然后对各个子序列之间进行直接插入排序,最后再缩小增量(即步长值)再进行插入排序,直到序列顺序基本稳定(步长足够小)时,对这种序列进行一次直接插入排序,在排序状况较好时,直接插入排序的效率还是挺高..
分类:
编程语言 时间:
2016-03-16 01:26:46
阅读次数:
195