首页 > 编程语言 > 详细

无序数组内查找指定值(快速查找)

时间:2020-07-07 18:03:04      阅读:137      评论:0      收藏:0      [点我收藏+]

面试过程中遇到这个问题

首先我先想到的是 二分查找

但是二分查找,是需要有序的

所以先将数组 有序排列(冒泡排序)

再进行二分查找

冒泡排序:(相邻比逆法,基本思想是,两两比较相邻记录的关键字,如果反序,则交换,直到没有反序的记录为止)

void bubbleSort(SqList *L){

  int i,j;

  Status flag = TRUE; //flag用来标记

  for(i=1;i<L->length&&flag;i++)//若flag为true,则退出循环

  {

    flag = FALSE;

    for(j=L->length -1;j>=1;j--){

      if(L->r[j] > L->r[j+1]){

        sway(L,j,j+1);
        flag=TRUE;
      }

    }    

  }

}

  

二分查找:(前提是 线性表的记录必须是关键有序,基本思想是,在有序表中,取中间记录作为比较对象,若给定的值与中间记录的关键字相等,则查找成功;若给定的值小于中间记录的关键字,则在中间记录的左半区进行查找;若大于,在右半区进行查找,不断重复上述过程,直到查找成功,或所有查找区域无记录,查找失败为止)

int Binary_Search(int *a,int n,int key){
	int low,high,mid;
	low = 1;
	high = n;
	while(low<=high){
		mid = (low+high)/2;
		if(key < a[mid])
			high=mid - 1;
		else if(key > a[mid])
			low = mid + 1;
		else
			return mid;
	}
	return 0;
}

  

无序数组内查找指定值(快速查找)

原文:https://www.cnblogs.com/darcy-hui/p/13261511.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!