C语言快速排序和二分查找
#include <stdio.h>
#include <stdlib.h>
#define BUF_SIZE 10
void display(int array[], int maxlen)
{
int i;
for(i = 0; i < maxlen; i++)
{
printf("%-3d", array[i]);
}
printf("\n");
return ;
}
int BinarySearch(int array[],int left,int right,int data){
int mid = (left+right)/2;
while (mid != left){
if (array[mid] == data){
return mid;
}
if (array[mid] > data){
right = mid;
return BinarySearch(array,left,right,data);
}
if (array[mid] < data){
left = mid;
return BinarySearch(array,left,right,data);
}
}
if (mid == left){
if (array[mid] == data){
return mid;
}
if (array[right] == data){
return right;
}
return -1;
}
}
void QuickSort(int *arr, int low, int high)
{
if (low < high)
{
int i = low;
int j = high;
int k = arr[low];
while (i < j)
{
while(i < j && arr[j] >= k)
{
j--;
}
if(i < j)
{
arr[i++] = arr[j];
}
while(i < j && arr[i] < k)
{
i++;
}
if(i < j)
{
arr[j--] = arr[i];
}
}
arr[i] = k;
QuickSort(arr, low, i - 1);
QuickSort(arr, i + 1, high);
}
}
int main()
{
int array[BUF_SIZE] = {12,85,25,16,34,23,49,95,17,61};
int maxlen = BUF_SIZE;
printf("排序前的数组\n");
display(array, maxlen);
QuickSort(array, 0, maxlen-1);
printf("排序后的数组\n");
display(array, maxlen);
int index = BinarySearch(array,0,9,25);
printf("25的下标为:%d.",index);
return 0;
}