#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define NUM 10
void put_out(int *a, int length)
{
int i;
printf("\n----------- show ------------ \n");
for( i=0; i<length; i++ )
printf("%d ", a[i]);
printf("\n\n");
}
void qsort_m(int *a, int left, int right)
{
if( (left >= 0) && (left < right) )
{
int i=left, j=right;
int tem = a[i];
while( i<j )
{
while( (i<j) && (a[j] >= tem) )
j--;
if( i<j )
a[i++] = a[j];
while( (i<j) && (a[i] <= tem) )
i++;
if( i<j )
a[j--] = a[i];
}
a[i] = tem;
if( left < (i-1) )
qsort_m(a, left, i-1);
if( (i+1) < right )
qsort_m(a, i+1, right);
}
}
void search(int *a, int length,int dst)
{
int i=0, j=length-1;
int mid ;
while( i<=j )
{
mid = (i+j)/2;
if( dst == a[mid] )
{
printf("%s find %d is dst %d \n", __func__, mid, dst);
return ;
}
else if( a[mid] >dst )
{
j = mid-1;
}
else
{
i = mid+1;
}
}
printf("%s not find dst %d \n", __func__, dst);
}
int main()
{
int i,ret;
int a[NUM];
//put_in();
srand((unsigned int)time(NULL));
for( i=0; i<NUM; i++ )
a[i] = rand()%20;
put_out(a, NUM);
qsort_m(a, 0, NUM-1);
put_out(a, NUM);
search(a, NUM,5);
search(a, NUM,0);
search(a, NUM,8);
return 0;
}
快排 + 二分查找
最新推荐文章于 2023-12-14 11:42:45 发布