基于快速排序
#include<stdio.h>
#include<stdlib.h>
int maximumGap(int* nums, int numsSize);
void quicksort(int *nums, int i, int j);
void main(){
int nums[2] = {100000000,1 };
int max = maximumGap(nums, 2);
printf("%d", max);
system("pause");
}
int maximumGap(int* nums, int numsSize){
//先排序 判断相邻两个数之间的间隔
//再次使用快速排序
if (numsSize == 0){
return 0;
}
quicksort(nums, 0, numsSize - 1);
if (numsSize == 1){
return 0;
}
for (int m = 0; m<numsSize; m++){
printf("-----------%d\n", nums[m]);
}
int left = numsSize - 1;
int right = numsSize - 2;
int max = nums[left] - nums[right];
for (int i = numsSize -1; i>=1; i--){
max = (max > (nums[i] - nums[i - 1])) ? max : (nums[i] - nums[i - 1]);
}
if (max<2){
return 0;
}
return max;
}
//使用快速排序
void quicksort(int *nums, int i, int j){
//需要两个指针和一个辅助空进
int begin, end;
int tmp;
begin = i;
end = j;
tmp = nums[begin];
int mid = 0;
if(begin < end){
while (begin < end){
while (nums[end] >= tmp && begin < end){
end--;
}
nums[begin] = nums[end];
while (nums[begin] <= tmp && begin < end){
begin++;
}
nums[end] = nums[begin];
for (int m = 0; m < 4; m++){
printf("llll-----------%d\n", nums[m]);
}
printf("\n");
}
printf("huanxhun");
nums[begin] = tmp;
// mid = (i + j) / 2; 错误之处
mid = begin;
quicksort(nums, i, mid - 1);
quicksort(nums, mid + 1, j);
}
}