C语言之数组


1,数组简介:

所谓数组,就是相同数据类型的元素按1定顺序排列的集合,就是把有限个类型相同的变量用1个名字命名,然后用编号辨别他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的份量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的情势组织起来的1种情势。这些按序排列的同类数据元素的集合称为数组。

2,例子要求:
针对数组这个最基础的数据结构,罗列这个数据结构可以支持的操作,并以大O的方式分析各个操作的时间复杂度

3,实现进程:

#include <QCoreApplication>
//数组的基本操作,排序,取最大值,模糊查询某个值

// 【1】数组排序 算法
// 1.1, 冒泡排序 O(n2)
最好的是数组有序情况下为:O(2N),

平均是正常随机乱序为:O(2N),

最差的是数据完全乱序O(n2)。

void BubbleSort(int A[], int N)

{

 int tmp;
 for (i = 0; i < N – 1; ++i)
 {
 for (j = 1; j < N – i; ++j)
 {
 if (A[j] > A[j – 1]) //从大到小排序,把较小的交换到后面来
 {
 tmp = A[j – 1];
 A[j – 1] = A[j];
 A[j] = tmp;
 }
 }
 }
}

// 1.2 快速排序,它的平均时间复杂度为O(Nlog2N)
最好的是数组有序情况下时间复杂度为:O(nlogn),
平均是正常随机乱序时平均时间复杂度为:O(nlogn)。 ,
最差的是数据完全乱序O(n^2)。
int Partition(int *arr, int low, int high)
{
 int pivot = arr[low];
 while(low < high)
 {
 while(low < high && arr[high] <= pivot) high–;
 arr[low] = arr[high];
 while(low < high && arr[low] >= pivot) low++;
 arr[high] = arr[low];
 }
 arr[low] = pivot;
 return low;
}

void Qsort(int *arr, int low, int high)
{
 if (low < high)
 {
 int mid = Partition(arr, low, high);
 Qsort(arr, low, mid – 1);
 Qsort(arr, mid + 1, high);
 }
}

// 【2】 数组取最大值 算法
最好情况下,最大值在第1个,时间复杂度为:O(n^2)
平均是,最大值在中间位置,时间复杂度:O(n).
最差是,最大值在末尾,时间复杂度:O(2^n)
int max(int array[],int n);
void main( )
{
 int num[N],count,i,val;
? scanf("%d",&count);
 for (i=0;i<count;i++)
 {
 scanf("%d",&num[i]);
 }
 val=max(num,count);
 printf("%dn",val);
 }

int max(int array[ ],int n)
{
 if (n<=1)
 return(array[0]); // 就1个数,最大值就是自已
 int t=max(array+1,n⑴); // 求后面 n⑴个数的最大值
 if (t>array[0]) // t 比第1个大,返回最大 t
 return(t);
 else
 return(array[0]); // t小,返回array[0];
}

// 【3】 数组查询是不是包括某个值
最好情况下,就是第1个,时间复杂度为O(1);
平均情况下,值在中间,时间复杂度为0(N/2);
最坏情况下,值在末尾或不存在,时间复杂度为O(N);
int main()
{
 int n,m,i,a[20];
 int find;
 scanf("%d",&n);
 for(i=0;i<n;i++){
 scanf("%d",&a[i]);
 }
 scanf("%d",&m);
 find = ⑴;
 for(i=0;i<n;i++){
 if(a[i] == m){
 find = i;
 break;
 }
 }

 if(find < 0) {
 printf("Non");
 }
 else {
 printf("%dn", find);
 }
 return 0;
}

// 【4】数组输入输出,1时没有想到用甚么算法,顺序遍历?

 ——–——-—————————————————————–——————————
<版权所有,允许转载,但必须以链接方式注明源地址,否则追究法律责任!>
原博客地址:    http://blog.itpub.net/26230597/viewspace⑴386607/
原作者:黄杉 (mchdba)
——–—————————————————————————————————

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 本站源码并不保证全部能正常使用,仅供有技术基础的人学习研究,请谨慎下载
8. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » C语言之数组

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡