
数组
文章平均质量分 58
逐月and
这个作者很懒,什么都没留下…
展开
-
找出数组中的最大数和最小数
方法:利用两个变量来分别存储最大值和最小值,并在数组遍历过程中进行判断程序:#includeusing namespace std;void Find_MM(int *a,int n){ int Max=a[0]; int Min=a[0]; for(int i=1;i<n;i++) { if(a[i]>=Max) { Max=a[i]; } if(a原创 2015-03-16 15:45:47 · 4975 阅读 · 0 评论 -
在时间复杂度为 O(n) 内找出数组中出现次数超过一半的数
#includeusing namespace std;//在时间复杂度为 O(n) 内找出数组中出现次数超过一半的数int Find(int *a,int n){if(nreturn -1;int Num=0;int count=0;for(int i=0;i{if(count == 0){Num=a[i];count=1;}e原创 2015-03-13 20:04:04 · 597 阅读 · 0 评论 -
如何用递归实现数组求和
#includeusing namespace std;int Sum(int *p,int n){return n==0?0:(Sum(p,n-1)+p[n-1]); //递归语句部分}int main(){int a[]={1,2,3,4,5,6,7,8,9};int length=sizeof(a)/sizeof(a[0]);int s原创 2015-03-11 16:47:23 · 766 阅读 · 0 评论 -
判定数组中是否存在重复元素
问题:数组有 n 个元素,元素取值范围为 1--n ,如何判定是否存在重复的元素?遍历数组法:假设在第 i 的位置的数字为 j ,则通过交换数字 j 到第 j 的位置,直到所有的数字都出现在自己的位置,或者发生冲突。#includeusing namespace std;//判定数组中是否存在重复元素int Find_repeat(int *a,int n){ int j=原创 2015-03-14 12:27:04 · 924 阅读 · 0 评论 -
计算两个有序数组的交集
#includeusing namespace std;//采用二路归并法,查找两个数组的交集进行保存,并返回交集的个数。int mix(int a[],int m,int b[],int n,int *c){int i=0,j=0,k=0;while(i{if(a[i]>b[j])j++;else if(a[i]i++;else原创 2015-03-12 10:48:49 · 765 阅读 · 0 评论 -
在已经排好序的数组中统计给定数字出现的次数
首先通过二分查找法,在数组中查找是否存在所给定的数字,若可以找到,则在此数的前后再进行查看,看是否存在连续的一样的数字,进行统计。程序如下:#includeusing namespace std;int BinarySearch(int a[],int n,int Number){if(a==NULL||n{return -1;}int begin=原创 2015-03-11 20:33:39 · 608 阅读 · 0 评论 -
如何用一个 FOR 循环打印出一个二(三)维数组
#includeusing namespace std;const int X=2;const int Y=5;const int Z=2;//二维数组的单循环输出void Show2(){int a[X][Y]={1,2,3,4,5,6,7,8,9,0};int S=X*Y;for(int i=0;icoutcout}//三原创 2015-03-11 17:09:28 · 1054 阅读 · 1 评论 -
找出有序数列中符合条件的数对的个数
问题描述:一个有序整数数组,元素取值可能是 1--N 中的任何一个,相同的数值不会重复出现。设计一个算法:找出有序数列中符合条件的数对的个数,满足数对中两数之和为 N+1使用二分法查找,用两个指针分别指向最开始和最后的一个数,从两端向中间遍历,直到两个指针交叉#includeusing namespace std;//找出数列中符合条件的数对的个数void Fin原创 2015-03-14 11:19:22 · 879 阅读 · 0 评论 -
寻找连续数组中缺失的数字!!
问题:给一个由 n-1 各整数组成的未经排序的数列,其元素都是 1--n 中的不同的整数。如何找出缺失的整数??算法设计:采用求和法进行查找。#includeusing namespace std;//找出数列中符合条件的数对的个数int Find_lost(int *a,int n){ int sum=0,sum1=0; for(int i=0;i<n;i++) {原创 2015-03-14 11:38:56 · 3248 阅读 · 0 评论 -
使用递归和非递归两种方法实现二分查找!!!
#includeusing namespace std;//非递归的方法int F_BinarySearch(int a[],int n,int Number){if(a==NULL||n{return -1;}int begin=0,end=n-1;while(begin{int mid=begin+(end-begin)/2;if(N原创 2015-03-11 19:31:12 · 1586 阅读 · 0 评论 -
在 1--N 的连续数组中找出唯一重复的元素
采用两种方法:求和法和异或法#includeusing namespace std;//采用求和的方法int Find_sum(int *a,int n){int sum=0,sum1=0; //用 sum 来存储 1--N 这 N 个数的和,用 sum1 来存储 1--N-1 这 N-1 个数的和for(int i=0;isum += a[i];f原创 2015-03-13 20:55:58 · 848 阅读 · 0 评论 -
判断一个数组中的数值是否连续相邻
一个整数数列,元素在 0--65535 中任意取值,相同的数字不会重复出现,0是例外,可以反复出现。#includeusing namespace std;//判断一个正数数组中数值是否连续(不存在数值相等的情况)bool IsContinue(int *a,int n){int max=-1,min=-1;int count=0;原创 2015-03-13 21:32:13 · 1108 阅读 · 0 评论 -
如何找出数组中出现次数为奇数次的唯一元素
采用异或的方式进行结果的搜索!!!#includeusing namespace std;//找出数组中出现次数为奇数次的唯一元素int Find_JI(int *a,int n){int result=0;for(int i=0;i{result^=a[i];}return result;}int main(){int a[原创 2015-03-13 21:50:51 · 895 阅读 · 1 评论 -
查找数组中第二大的数
方法一:先进行排序,然后直接很具数组下标对倒数第二个数进行查找即可,此时时间复杂度最好为:O(nlogn)方法二:设置两个变量(一个保存最大的数,一个保存第二大的数)进行判断。对数组进行一边的遍历,即可在时间复杂度为 n 的情况下查找出第二大的数。程序代码:#includeusing namespace std;int Find_Sec(int *a,int n){ int原创 2015-03-16 15:34:31 · 2128 阅读 · 0 评论 -
重新排列数组,使得数组左边的数字为奇数,数组右边的数字为偶数
源程序:#includeusing namespace std;void Swap(int &a,int &b){ int temp; temp=a; a=b; b=temp;}void Change(int *a,int n){ int nl=0; int nr=n-1; while(nl<nr) { while(nl<nr&&a[nl]%2==1)原创 2015-03-16 15:17:51 · 733 阅读 · 0 评论 -
使用递归算法判断数组递增!!
#includeusing namespace std;//使用递归算法对数组进行判定的函数!!bool Result(int a[],int n){if(n==0){coutexit(0);}else if(n==1)return true;else{return (Result(a,n-1)&&(a[n-1]>a[n-2]));}原创 2015-03-11 17:44:21 · 659 阅读 · 0 评论