先对数组排序,在进行折半查找(C++)
2013-07-15 23:36
441 查看
第一步:输入15个整数
第二步:对这15个数进行排序
第三部:输入一个数,在后在排好序的数中进行折半查找,判断该数的位置
实现代码如下:
方法一:
选择排序法+循环折半查找法
第二种方法:
冒泡排序法+递归折半查找法
第二步:对这15个数进行排序
第三部:输入一个数,在后在排好序的数中进行折半查找,判断该数的位置
实现代码如下:
方法一:
选择排序法+循环折半查找法
#include<iostream> using namespace std; int main(){ int a[15]; int n,i; void array_sort(int a[], int n); int zeban(int a[], int start ,int end,int n); cout<<"Please input 15 numbers:"<<endl; for(i=0;i<15;i++){ cin>>a[i]; } cout<<"Sorted order:"<<endl; //==============选择排序======== array_sort(a,15); //=======输出排序完成的数组==== for(i=0;i<15;i++){ cout<<a[i]<<" "; } cout<<endl; cout<<"please input a number:"; cin>>n; //================折半查找========== cout<<endl; cout<<"number "<<n<<" locate in "<<zeban(a,0,14,n)<<endl; return 0; } void array_sort(int a[],int n){ int i,j,k,tool; for(i=0;i<n;i++){ k=i; for(j=(i+1);j<n;j++){ if(a[j]<a[k]){ k=j; } } tool=a[i]; a[i]=a[k]; a[k]=tool; } } int zeban(int a[],int start,int end,int n){ int tag=-1; for(start=0,end=14;start<=end;){ if(n==a[(start+end)/2]){ tag=(start+end)/2+1; return tag; }else if(n<a[(start+end)/2]){ end=(start+end)/2; }else if(n>a[(start+end)/2]){ start=(start+end)/2; } } }
第二种方法:
冒泡排序法+递归折半查找法
#include<iostream> using namespace std; int main(){ int a[15]; int n,i; void array_sort(int a[], int n); int IterBiSearch(int data[], const int x, int beg, int last); cout<<"Please input 15 numbers:"<<endl; for(i=0;i<15;i++){ cin>>a[i]; } cout<<"Sorted order:"<<endl; //==============选择排序======== array_sort(a,15); //=======输出排序完成的数组==== for(i=0;i<15;i++){ cout<<a[i]<<" "; } cout<<endl; cout<<"please input a number:"; cin>>n; //================折半查找========== cout<<endl; cout<<"number "<<n<<" locate in "<<IterBiSearch(a,n, 0, 14)<<endl; return 0; } void array_sort(int a[],int n){ int i,j,tool; for(i=0;i<n;i++){ for(j=0;j<(n-i-1);j++){ if(a[j]>a[j+1]){ tool=a[j]; a[j]=a[j+1]; a[j+1]=tool; } } } } int IterBiSearch(int data[], const int x, int beg, int last) { int mid = -1; mid = (beg + last) / 2; if (x == data[mid]) { return (mid+1); } else if (x < data[mid]) { return IterBiSearch(data, x, beg, mid - 1); } else if (x > data[mid]) { return IterBiSearch(data, x, mid + 1, last); } return -1; }
相关文章推荐
- 先对数组排序,在进行折半查找(C++)
- 先对数组排序,在进行折半查找(C++)
- C++ 先对数组排序,在进行折半查找
- C++利用指针数组和快排对输入的字符串进行排序
- sort函数的用法(C++排序库函数的调用) 对数组进行排序,在c++中有库函数帮我们实现,这们就不需要我们自己来编程进行排序了。 (一)为什么要用c++标准库里的排序函数 Sort()函数是c+
- C++中利用数组对字符进行除重和排序
- C++ 初学者指南 第四篇(4)对数组进行排序
- C++ 对数组进行排序并返还对应索引号
- C++中用冒泡排序算法对一个数组中的元素进行排序
- C++向数组内插入一个数并进行排序
- 按指定顺序进行数组排序 C++
- 挑战30天C++入门极限-C/C++中利用数组名/指针进行排序实例
- C++方法对输入的任意数进行排序
- C# 数组按照升序排列并输出(分别用冒泡法,选择法,插入法进行排序)。
- PHP使用array_multisort对多个数组或多维数组进行排序
- //@"6",@"34",@"56","78"存入数组,并进行排序降序输出结果
- 这是一个我面试某公司的算法题目:对一个字符数组进行排序,根据给定的字符,大于它的,放在数组的左边,小于它的,放在数组的右边,且数组中的元素之间的相对位置要保持不变。
- 高速排序-c++(分别用数组和容器实现)
- 将数组中的对象按照浏览器的x/y轴的显示方式进行排序
- php两个数组合并在一起,根据两个数组相同的键进行排序(时间排序)