首先进行快速排序
快速排序代码如下:
void quick_sort(int* arr,int start,int end) {
if (start >= end)
return;
int left = start;
int right = end;
int pivot = arr[left];
while (left < right) {
while (arr[right] > pivot && left < right) {
right--;
}
if (left < right) {
arr[left] = arr[right];
left++;
}
while (arr[left] < pivot && left < right) {
left++;
}
if (left < right) {
arr[right] = arr[left];
right--;
}
arr[left] = pivot;
quick_sort(arr,start,left-1);
quick_sort(arr,right+1,end);
}
}
对所给数组进行排序,然后通过判断语句进行判断:
int find_Min(int* arr,int n)
{
int min = arr[0];
if(arr[0] <= 0)
{
for(int i = 0; i < n; i++) {
if(arr[i] >= 0 && arr[i] > 1 && arr[i-1] < 1)
{
return 1;
}
if(arr[i] >= 0 && arr[i] != 1 && i != n-1)
{
if(((arr[i+1] - arr[i]) > 1))
return arr[i] + 1;
else i=i;
}else if(arr[i] > 0 && arr[i] == 1)
{
if((arr[i+1] - arr[i]) > 1)
{
return arr[i] + 1;
} else i=i;
}
}
return arr[n-1] + 1;
}
else if(arr[0] > 1)
{
return 1;
} else if(arr[0] == 1)
{
for (int i = 0; i < n - 1; i++) {
if((arr[i + 1] - arr[i]) > 1)
return arr[i] + 1;
else i++;
}
return arr[n-1] + 1;
}
}
总体代码:
#include <stdio.h>
void quick_sort(int* arr,int start,int end) {
if (start >= end)
return;
int left = start;
int right = end;
int pivot = arr[left];
while (left < right) {
while (arr[right] > pivot && left < right) {
right--;
}
if (left < right) {
arr[left] = arr[right];
left++;
}
while (arr[left] < pivot && left < right) {
left++;
}
if (left < right) {
arr[right] = arr[left];
right--;
}
arr[left] = pivot;
quick_sort(arr,start,left-1);
quick_sort(arr,right+1,end);
}
}
void print_array(int* arr,int n)
{
while(n--)
{
printf("%d ",*arr++);
}
}
int find_Min(int* arr,int n)
{
int min = arr[0];
if(arr[0] <= 0)
{
for(int i = 0; i < n; i++) {
if(arr[i] >= 0 && arr[i] > 1 && arr[i-1] < 1)
{
return 1;
}
if(arr[i] >= 0 && arr[i] != 1 && i != n-1)
{
if(((arr[i+1] - arr[i]) > 1))
return arr[i] + 1;
else i=i;
}else if(arr[i] > 0 && arr[i] == 1)
{
if((arr[i+1] - arr[i]) > 1)
{
return arr[i] + 1;
} else i=i;
}
}
return arr[n-1] + 1;
}
else if(arr[0] > 1)
{
return 1;
} else if(arr[0] == 1)
{
for (int i = 0; i < n - 1; i++) {
if((arr[i + 1] - arr[i]) > 1)
return arr[i] + 1;
else i++;
}
return arr[n-1] + 1;
}
}
//-1 2 3 4 5 6
//-1 1 2 3 4 5 6
int main() {
int arr[] = {1,2,3,0};
quick_sort(arr,0,sizeof (arr)/sizeof (arr[0])-1);
print_array(arr,sizeof (arr)/sizeof (arr[0]));
int a = find_Min(arr,sizeof (arr)/sizeof arr[0]);
printf("\n");
printf("%d",a);
return 0;
}
//-5 1 2 3 5 6