冒泡排序+二分法查找

 1 #include <stdio.h>
 2
 3 void bubble(int *arr, int length)
 4 {
 5     int i, j, tmp;
 6     for(i=0;i<length-1;i++)
 7     {
 8         for(j=0;j<length-1-i;j++)
 9         {
10             if(arr[j]>arr[j+1])
11             {
12                 tmp = arr[j];
13                 arr[j] = arr[j+1];
14                 arr[j+1] = tmp;
15             }
16         }
17     }
18
19 }
20
21 int search(int *arr, int key, int high, int low)
22 {
23     int middle = 0;
24     if(high<low)
25         return -1;
26     middle = (low+high)/2;
27     printf("hello\n");
28     if(arr[middle] == key)
29     {
30         return middle;
31     }
32     else if(arr[middle]<key)
33         return search(arr, key, high, middle+1);
34     }
35     else
36     {
37         return search(arr, key, middle-1, low);
38     }
39 }
40
41 int main()
42 {
43     int i = 0;
44     int a[] = {1, 32, 5, 56, 39, 4, 67, 83, 25, 98};
45
46     for(i=0;i<10;i++)
47     {
48         printf("%d\t", a[i]);
49     }
50     printf("\n");
51     bubble(a, 10);
52     i = search(a, 32, 9, 0);
53     printf("i=%d\n", i);
54     for(i=0;i<10;i++)
55     {
56         printf("%d\t", a[i]);
57     }
58     printf("\n");
59     return 0;
60 }

 

时间: 2024-09-21 12:28:42

冒泡排序+二分法查找的相关文章

Java实现二分法查找算法

[ 什么是二分查找 ] 二分查找又称为折半查找,该算法的思想是将数列按序排列,采用跳跃式方法进行查找,即先以有序数列的中点位置为比较对象, 如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分.以此类推不断缩小搜索范围. [ 二分查找的条件 ] 二分查找的先决条件是查找的数列必须是有序的. [ 二分查找的优缺点 ] 优点:比较次数少,查找速度快,平均性能好: 缺点:要求待查数列为有序,且插入删除困难: 适用场景:不经常变动而查找频繁的有序列表. [ 算法步骤描述 ] ① 首

php二分法查找数组是否包含某一元素

 二分法查找数组是否包含某一元素,兼容正反序,代码实现:  代码如下: <?php $searchValue = (int)$_GET['key']; function search(array $array, $value) { $max = count($array)-1; $min = 0; $isAscSort = $array[$min] < $array[$max]; while (TRUE) { $sum = $min+$max; $midKey = (int)($sum%2 =

js基本算法:冒泡排序,二分查找的简单实例_基础知识

知识扩充: 时间复杂度:算法的时间复杂度是一个函数,描述了算法的运行时间.时间复杂度越低,效率越高. 自我理解:一个算法,运行了几次时间复杂度就为多少,如运行了n次,则时间复杂度为O(n). 1.冒泡排序 解析:1.比较相邻的两个元素,如果前一个比后一个大,则交换位置. 2.第一轮的时候最后一个元素应该是最大的一个. 3.按照步骤一的方法进行相邻两个元素的比较,这个时候由于最后一个元素已经是最大的了,所以最后一个元素不用比较. function sort(elements){ for(var i

解析php二分法查找数组是否包含某一元素_php技巧

二分法查找数组是否包含某一元素,兼容正反序,代码实现: 复制代码 代码如下: <?php  $searchValue = (int)$_GET['key'];  function search(array $array, $value) {     $max = count($array)-1;     $min = 0;     $isAscSort = $array[$min] < $array[$max];      while (TRUE) {         $sum = $min+

php数据结构与算法(PHP描述) 查找与二分法查找_php技巧

复制代码 代码如下: <?php /** * 查找 * **/ // 顺序查找 function normal_search($arrData,$val) { $len = count($arrData); if($len == 0) return -1; for($i = 0;$i < $len; $i++ ) { echo "find No.",$i + 1," value = ",$arrData[$i]," is = ",$v

PHP冒泡法排序与二分法查找实例

   代码如下 复制代码 //冒泡法排序 //随便给出一个乱序数组 $arr = array(0,2,10,9,19,23,89,112,321,234); //统计数组 $num = count($arr); //冒泡倒序排列 for($i=0;$i<$num-1;$i++){  for($m=0;$m<$num-1;$m++){   if($arr[$m]<$arr[$m+1]){    $temp = $arr[$m];    $arr[$m] = $arr[$m+1];    $

php中实现二分法查找的程序代码

二分法(dichotomie) 即一分为二的方法. 设[a,b]为R的闭区间. 逐次二分法就是造出如下的区间序列([an,bn]):a0=a,b0=b,且对任一自然数n,[an+1,bn+1]或者等于[an,cn],或者等于[cn,bn],其中cn表示[an,bn]的中点. 例子1 header('Content-Type: text/html; charset=utf-8;'); $arr = array(2,33,22,1,323,321,28,36,90,123); sort($arr);

PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解

数据结构很重要,算法+数据结构+文档=程序使用PHP描述冒泡排序算法,对象可以是一个数组 复制代码 代码如下: //冒泡排序(数组排序)function bubble_sort($array) { $count = count($array); if ($count <= 0) return false; for($i=0; $i<$count; $i++){ for($j=$count-1; $j>$i; $j–){ if ($array[$j] < $array[$j-1]){

java数组-顺序插入数据及二分法查找数据

顺序加入数组,是我自己想出来的. 而二分法这么简单的算法,我自己没有实践出来,还是看了一下书上代码之后,凭记忆写出来的. 可能有稍许不同,但不影响结果. 加油呀.要 class HighArray { private long[] a; private int nElems; public HighArray(int max) { a = new long[max]; nElems = 0; } public int size() { return nElems; } public int fi