public class Main {
public static void main(String[] args) {
}
public int maxDValue(int[] arr) {
if (arr.length < 2) {
return -1;
}
int result = Math.abs(arr[0] - arr[1]);
for (int i = 1; i < arr.length - 1; i++) {
if (Math.abs(arr[i] - arr[i + 1]) > result) {
result = Math.abs(arr[i] - arr[i + 1]);
}
}
return result;
}
}
桶排序typedef struct tagBucket{bool bValid;int nMin;int nMax;tagBucket():bValid(false){}void Add(int n){if(!bValid){nMin = nMax = n;bValid = true;}else{if(nMax<n)nMax = n;else if(nMin>n)nMin = n;}}}SBucket;int GetMaxGap(const int* A,int size){SBucket* pBucket = new SBucket[size];int nMax = A[0];int nMin = A[0];int i = 0;for(i=0;i<size;i++){if(nMax<A[i])nMax = A[i];else if(nMin>A[i])nMin = A[i];}int delta = nMax-nMin;int nBucket;for(i=0;i<size;i++){nBucket = (A[i]-nMin)*size/delta;if(nBucket>=size){nBucket = size-1;}pBucket[nBucket].Add(A[i]);}i = 0;int nGap = delta/size;int gap;for(int j=1;j<size;j++){if(pBucket[j].bValid){gap = pBucket[j].nMin-pBucket[i].nMax;if(nGap<gap)nGap = gap;i = j;}}return nGap;}
function getMaxDistance(arr,count){
var len = arr.length,max,min;
if(len==0) return [];
count = count||(count>1 ? count:10);
//判断最大最小值
min = max = arr[0];
for(var i=1;i<len;i++){
min = min < arr[i] ? min :arr[i];
max = max > arr[i] ? max :arr[i];
}
//桶间距
var delta = (max-min+1)/count;
//初始化桶
var buckets = [];
for(i=0;i<count;i++){
buckets[i] =[];
buckets[i].bValid=false;
buckets[i].nMax;
buckets[i].nMin;
buckets[i].Add = function(n){
if(!this.bValid){
this.nMin = this.nMax = n;
this.bValid = true;
}else{
if(this.nMax<n){
this.nMax = n;
}else if(this.nMin>n){
this.nMin = n;
}
}
}
}
var idx,idxlen;
for(i = 0;i<len;i++){
//获得桶索引
idx = Math.floor((arr[i]-min)/delta);
//idxlen =buckets[idx].length;
//非空桶
buckets[idx].push(arr[i]);
buckets[idx].Add(arr[i]);
}
i=0;
var ngap = delta;
for(var j=1;j<count;j++){
if(buckets[j].bValid){
gap =buckets[j].nMin-buckets[i].nMax;
if(ngap <gap)
ngap = gap;
i=j;
}
}
return ngap;
}
var arr1 = [6,7,0,3,2,9,1,17,8,3,6,5,0,1,10];
var arr2 = [-5, -3, -5, -3, 9, -6, 3, 1, -3, -8];
console.log(getMaxDistance(arr1,arr1.length));//7
console.log(getMaxDistance(arr2,arr1.length));//6
public class Main {
public static void main(String[] args) {
int [] a={1,11,16};
maxBetween(a);
}
public static void maxBetween(int arr [])
{
int length=arr.length;
int lengthInteger=0;
String [] strs=new String [length];
for (int i=0;i<length;i++)
{
strs[i]=Integer.toString(arr[i]);
if(strs[i].length()>lengthInteger)
{lengthInteger=strs[i].length();}
}
String [][] strss=new String [lengthInteger][length];
int len=0;
int k=0;
for (int i=0;i<length;i++)
{
len=strs[i].length();
for(int j=1;j<lengthInteger+1;j++)
{
if(j==len)
{
while(strss[j-1][k]!=null)
{ k++;}
strss[j-1][k]=strs[i];
}
k=0;
}
}
String strTemp=null;
for (int i=0;i<lengthInteger;i++)
for(int j=0;j<length-1;j++)
{
if(strss[i][j+1]!=null)
{
for(int s=0;s<i+1;s++)
{
if(strss[i][j].charAt(i-s)>
strss[i][j+1].charAt(i-s))
{
strTemp=strss[i][j];
strss[i][j]=strss[i][j+1];
strss[i][j+1]=strTemp;
}
}
}
}
k=0;
for (int i=0;i<lengthInteger;i++)
for(int j=0;j<length;j++)
{
if(strss[i][j]!=null)
{
arr[k]=Integer.parseInt(strss[i][j]);
k++;
}
}
int maxBetween=0;
for(int i=0;i<length-1;i++)
{
if(maxBetween<Math.abs(arr[i]-arr[i+1]))
{
maxBetween=Math.abs(arr[i]-arr[i+1]);
}
}
System.out.println(maxBetween);
strs=null;
strss=null;
strTemp=null;
}
}
- (void)viewDidLoad {
[ super viewDidLoad];
dataArr = [ NSMutableArray arrayWithArray :@[@4,@(-25),@3,@6,@78,@10,@18]];
sourceArr = [NSMutableArray array ]; // 存放差值
//第一种情况直接获取N个未排序整数相邻两个数之间的差值比较
[self getMaxV];
//第二种情况获取排过序的整数相邻两个数之间的差值比较
//排序完成之后在调用getMaxV方法
}
NSLog (@"数据源-->\n%@", dataArr );
for (int i = 0; i < dataArr.count-1; i++) {
int value = 0;
value = [dataArr[i+1] intValue] - [dataArr[i] intValue];
value = value > 0 ? value : (-value);
[sourceArr addObject:[NSString stringWithFormat:@"%ld",(long)value]];
}
NSLog (@"两两之间差值%@", sourceArr );
int index = 0;
int max = 0;
for (int i = 0; i < sourceArr.count-1; i++) {
int firstV = [sourceArr[i] intValue];
int secondV = [sourceArr[i+1] intValue];
if (firstV >= secondV) {
if (max < firstV) {
index = i;
max = [sourceArr[i] intValue];
}
}else{
if (max < secondV) {
index = i+1;
max = [sourceArr[i+1] intValue];
}
}
}
NSLog(@" 第 %ld 个与第 %ld 个之间的差值最大为 %ld",(long)index+1,(long)index+2,(long)max);
}