阳春的专栏

yangchun57的专栏

随机产生N个整数,并对其进行排序,查找……

 

#include <stdlib.h>
#include 
<stdio.h>
#include 
<time.h>   //使用当前时钟做种子

#define N 100

void Produce(int *dat)  //产生N个随机大小的整数
...{
 
int i;
 srand( (unsigned)time( NULL ) );
//初始化随机数
 for( i = 0; i < N; i++ )
  dat[i] 
= rand(); 
}


void Output(int dat[])  //输出函数
...{
 
int i;
 
for (i = 0; i < N; i++)
  printf(
"dat[%d]=%d ",i,dat[i]);
 printf(
" ");
}


void Swap(int &a, int &b) //交换两个变量的值
...{
 
int temp;
 temp 
= a; a = b; b = temp;
}


int Partition(int *dat,int p,int r)//把 < x 的元素换到左边的区域,把 > x 的元素换到右边的区域
...{
 
int i = p, j =+ 1;
 
int x = dat[p];
 
while (1)
 
...{
  
while(dat[++i]<&& i<r);
  
while(dat[--j]>x);
  
if(i>=j) break;
  Swap(dat[i],dat[j]);
 }

 dat[p] 
= dat[j];
 dat[j] 
= x;
 
return j;
}


void QuickSort(int *dat,int p,int r)  //快速排序
...{
 
if(p<r)
 
...{
  
int q = Partition(dat,p,r);
  QuickSort(dat,p,q
-1);
  QuickSort(dat,q
+1,r);
 }

}


int BinarySearch(int *dat,int &data, int n) //二分查找
...{
 
int left = 0;
 
int right = n-1;
 
while (left <= right)
 
...{
  
int middle = (left+right)/2;
  
if(data==dat[middle]) return middle;
  
if(data > dat[middle])  left = middle + 1;
  
else right = middle - 1;
 }

 
return -1;
}


void main( void )
...{
 
int data,temp,n;
 n 
= N;
 
int *dat;
 dat 
= new int[n];
 Produce(dat);
 Output(dat);
 QuickSort(dat,
0,N-1);
 Output(dat);
 printf(
"请输入要查找的数据:");
 scanf(
"%d",&data);
 temp 
= BinarySearch(dat,data,n);
 
if(temp==-1) printf("没有找到! ");
 
else printf("找到了,%d=dat[%d]…… ",data,temp);
}
    
阅读更多
文章标签: output include null
个人分类: C/C++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

随机产生N个整数,并对其进行排序,查找……

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭