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);
}