加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > C语言 > 正文

C语言快速排序与二分查找算法示例

发布时间:2020-12-15 01:03:01 所属栏目:C语言 来源:网络整理
导读:本篇章节讲解C语言二分排序与查找算法。供大家参考研究具体如下: 题目: 首先产生随机数,再进行快速排序,再进行二分查找。 实现代码: #include stdio.h#include stdlib.h#include time.hvoid quiksort(int a[],int low,int high){ int i = low

本篇章节讲解C语言二分排序与查找算法。分享给大家供大家参考,具体如下:

题目:首先产生随机数,再进行快速排序,再进行二分查找。

实现代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void quiksort(int a[],int low,int high)
{
 int i = low;
 int j = high;
 int temp = a[i];
 if( low < high)
 {
  while(i < j)
  {
   while((a[j] >= temp) && (i < j))
   {
    j--;
   }
   a[i] = a[j];
   while((a[i] <= temp) && (i < j))
   {
    i++;
   }
   a[j]= a[i];
  }
  a[i] = temp;
  quiksort(a,low,i-1);
  quiksort(a,j+1,high);
 }
 else
 {
  return;
 }
}
int search(int x,int v[],int n){
 int low,high,mid;
 low = 0;
 high = n - 1;
 while ( low <= high ) {
  mid = (low + high) / 2;
  if(x < v[mid]){
   high = mid - 1;
  }
  else if(x > v[mid]){
   low = mid + 1;
  }
  else{
   return mid;
  }
 }
 return -1;
}
int main(){
 int arry[100] ;
 int i,j;
 srand((unsigned)time(NULL)); //产生不同的随机数
 for(i=0;i<100;i++)
 {
  j = rand()%100;
  //if(i%2==0) //产生负数
  //j =-j;
  arry[i]=j;
 }
 int location;
 int number ;
 quiksort(arry,99);//随机数先进行排序
 for(i=0;i<100;i++)
 {
  printf("%d ",arry[i]);
 }
 printf("n");
 printf("请输入你要查找的数字");
 scanf("%d",&number);
 location = search(number,arry,100);
 printf("%dn",location);
 return 0;
}

心得与体会:

二分查找比较容易理解,就是折半查找法,所以要求数据必须是有序数列。不断比较中间值。

快速排序是应用了递归,首先确定一个关键数据,再把比他大的放到后面,比他小的放到前面,再分别对这两部分进行同样的操作。

希望本文所述对大家C语言程序设计有所帮助。

您可能感兴趣的文章:

  • C语言使用stdlib.h库函数的二分查找和快速排序的实现代码
  • c语言快速排序算法示例代码分享
  • 用c语言实现冒泡排序,快速排序
  • C语言实现选择排序、冒泡排序和快速排序的代码示例
  • C语言中快速排序和插入排序优化的实现
  • C语言编程中实现二分查找的简单入门实例
  • C语言二分查找算法及实现代码
  • C语言数据结构中二分查找递归非递归实现并分析

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读