一、数组的基本知识

 #include<stdio.h>
#include<stdlib.h> void main0(){
int a[]={,,,,};//数组在内存里是连续排列的
int i;//VS2012版本,变量的声明要放在最前面(所以建议大家使用VS2013及之后的版本)
printf("%d\n",sizeof(a));//求内存占多少
printf("%d\n",sizeof(a)/sizeof(int));//求数组有多少个元素
printf("%x\n",a); for (i = ; i < ; i++)//java语言中的a.length在这儿行不通,只能sizeof(a)/sizeof(int)
{
printf("a[%d]=%d &a[%d]=%x\n",i,a[i],i,&a[i]);
} system("pause");
} void main1(){
int i;
int a[];//数组越界不报错
//因为数组外部的内存空间,不确定是否有权限,
//如果越界访问,程序会崩溃
for (i = ; i < ; i++)
{
a[i]=i+;
}
getchar();
}

二、const和define的区别(const代码不可更改,可在内存里更改;define放在常量区,无论如何无法修改)

 #include<stdio.h>
#include<stdlib.h>
#define N 20 void main(){
int a[N]; //只有define可以
//printf("%d", &N); 报错,编译器放在常量区,没有地址,无从修改 const int num = ; //可变的常量,可以强制去掉常量的属性
//num = 12; const限定代码不能修改,在内存有实体,是可以变的数
printf("%x", &num);
//int b[num];//这样不可以 system("pause");
}

三、数组初始化

 #include<stdio.h>
#include<stdlib.h> void main(){
//int num[10]={1,2,3,4,5,6,7,8,9,10};
//int num[10]={1,2,3,4,5,6,7,8};//不足部分,填充为0
//double num[10]={1,2,3,4};
//数组元素大小已经确定,下标可以省略
//double num[] = { 1, 2 };
//double num[] = {};//无法指定数组的大小,无法分配内存
double num[] = { };
printf("%x",&num);
getchar();
}

四、数组操作说明

 #include<stdio.h>
#include<stdlib.h> void main4(){
int a[]={,,};
int b[];
int i;
//b=a; 数组不能进行赋值,数组名是一个地址常量
printf("%x\n", a);
for (i = ; i < ; i++)
{
scanf("%d", &a[i]);
printf("%d\n", a[i]);
}
system("pause");
} void main5(){
char str[] = { '', 'a', '', 'm', '\0' };//以'\0' 结束才不会出现“烫烫”
//char strm[15] = { 'c', 'a', 'l', 'c' };
char strm[] = { 'c', 'a', 'l', 'c' ,'\0'};
char strn[] = "notepad";//双引号会自动加上/0
scanf("%s", strn); //只有字符串才能整体输入输出
printf("%s", str);
system(strm);
system(strn);
system("pause");
}

五、数组访问

 #include<stdio.h>
#include<stdlib.h> void main(){
int num[] = { , , , , , , , , , };
int i;
for (i = ; i < ; i++)
{
printf("%d,%d,%x,%x\n", num[i],*(num+i),&num[i],num+i);
//num[i]与*(num+i)等价 &num[i],num+i等价
}
printf("\n逆序\n");
for (i = ; i >= ; i--)
{
printf("%d,%x\n", *(num + i), num + i);
} getchar();
}

六、斐波那契数列

 #include<stdio.h>
#include<stdlib.h>
//F(n)=F(n-1)+F(n-2)
void main(){
//int a[50]; int最后会越界
double a[];
int i;
a[]=1.0;
a[]=1.0;
for (i = ; i < ; i++)
{
a[i]=a[i-]+a[i-];
printf("%f\n",a[i]);
}
getchar();
}

七、选择排序法

求最大值

 #include<stdio.h>
#include<stdlib.h>
#include<time.h>//时间随机数 void main(){
int num[];
time_t tms;//时间的数据类型
int i,X;
srand((unsigned int)time(&tms));//设置随机数种子
for (i = ; i < ; i++)
{
num[i]=+rand()%;
printf("%d\n",num[i]);
} X = ;//0是下标,我先假定0是最大的数
for (i = ; i < ; i++)
{
if (num[X] < num[i])
{
X = i;
}
}
printf("max=%d\n",num[X]);
getchar();
}

     设置了随机数种子,每次的值都不一样

升序排列

 #include<stdio.h>
#include<stdlib.h>
#include<time.h>//时间随机数 void main(){
int num[];
time_t tms;//时间的数据类型
int i,j,tmp;
srand((unsigned int)time(&tms));//设置随机数种子
for (i = ; i < ; i++)
{
num[i]=+rand()%;
printf("%d\n",num[i]);
} for (i = ; i < -; i++)//注意是 i<数组.length-1
{
for (j = i+; j < ; j++)//注意是 j=i+1
{
if(num[i]>num[j]){//升序
tmp=num[i];
num[i]=num[j];
num[j]=tmp;
}
}
}
printf("\n排序以后\n");
for (i = ; i < ; i++)
{
printf("%d\n", num[i]);
}
getchar();
}

八、冒泡排序法(效率不如选择)

 #include<stdio.h>
#include<stdlib.h>
#include<time.h>//时间随机数 void main(){
int num[];
time_t tms;//时间的数据类型
int i,j,tmp;
srand((unsigned int)time(&tms));//设置随机数种子
for (i = ; i < ; i++)
{
num[i]=rand()%;
printf("%d\t",num[i]);
}
  //开始冒泡排序
for (i = ; i < -; i++)
{
for (j = ; j < --i; j++)
{
if(num[j]>num[j+]){
tmp=num[j];
num[j]=num[j+];
num[j+]=tmp;
}
}
}
printf("\n排序以后\n");
for (i = ; i < ; i++)
{
printf("%d\t", num[i]);
}
getchar();
}

九、数组与函数

 #include<stdio.h>
#include<stdlib.h> void go(int a[]){//数组作为参数的时候,是传递地址
int b[];
printf("go=%d\n",sizeof(a));
printf("%d",sizeof(b));//这里的数组b非参数,即实际大小
} void main(){
int a[];
printf("%d\n",sizeof(a));
go(a);
getchar();
}

[c/c++] programming之路(14)、数组+冒泡和选择排序的更多相关文章

  1. 基于python语言的经典排序法(冒泡法和选择排序法)

    前 每逢周末就遇雨期,闲暇之余,捣鼓了下python,心心念想学习,今天就在电脑上装了个2.7,学习了下经典算法,冒泡与选择排序法 第一次写关于python的文章,说的不当之处,多多指正,我积极改正 ...

  2. java中级——二叉树比较冒泡和选择排序

    上次我们说到二叉树排序比较,给出如下的题目 题目:创建五万个随机数,然后用分别用冒泡法,选择法,二叉树3种排序算法进行排序,比较哪种更快 废话不说直接上源码,可以看控制台结果 注意的是 需要我们需要上 ...

  3. python基础:冒泡和选择排序算法实现

    冒泡排序和选择排序   首先引用一下百度百科对于冒泡算法的定义:   冒泡排序算法的原理如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素做同样的工作,从开始第一对到结尾 ...

  4. C语言之实现函数返回一个数组,以及选择排序,还有折半查找。这是同学的一个作业。。。

    作业的具体要求如下: 编写一个完整的程序,实现如下功能.(1)    输入10个无序的整数.(2)    用选择排序法将以上接收的10个无序整数按从大到小的顺序排序.(3)    要求任意输入一个整数 ...

  5. C语言链表中数组实现数据选择排序,升序、降序功能主要难点

    链表排序讲解: head指针指向链表的头结点,是找到整个链表的唯一依据,如果head指针丢失,整个链表就找不到了. head存储的是第一个节点的地址,head->next存储的是第二个节点的地址 ...

  6. Java基础【冒泡、选择排序、二分查找】

    冒泡排序的思路就是前一个和后一个进行比较,如果大的就交换位置   大的数字后浮 如   12      8    5     31 第一轮   8   5   12   31 第二轮   5   8 ...

  7. StringBuffer、StringBuilder、冒泡与选择排序、二分查找、基本数据类型包装类_DAY13

    1:数组的高级操作(预习) (1)数组:存储同一种数据类型的多个元素的容器. (2)特点:每个元素都有从0开始的编号,方便我们获取.专业名称:索引. (3)数组操作: A:遍历 public stat ...

  8. 【数组】—冒泡排序&&选择排序---【巷子】

    /* 什么是冒泡排序:从头到尾比较相邻的两个数的大小,如果符合条件则进行比较 [注]:从小到大进行排序 假设有一个数组 var arr = [9,8,7,6,5,4]; 我们想要进行这个数组进行排序那 ...

  9. AJPFX:学习JAVA程序员两个必会的冒泡和选择排序

    * 数组排序(冒泡排序)* * 冒泡排序: 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处* * 选择排序 : 从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现 ...

随机推荐

  1. nodejs & npm & gulp 安装和配置

    熟悉 Hellolily的过程中,了解了这个. 环境: ubuntu 14.04 LTS 64bit 源码安装方式: 下载最新源码:如果被和谐请自行想办法. 解压并编译安装: cd node-xxx ...

  2. D2

    Cosmic Cleaner: 为什么大家都知道球缺怎么求,我没听说过啊??? 我真的是印象里今天第一次听说球缺这个东西啊... 我一看,哇,神仙几何题,毫无头绪,投了投了,然后就被过穿了??? tl ...

  3. Nestjs 缓存

    Docs: https://docs.nestjs.com/techniques/caching yarn add @nestjs/mongoose mongoose yarn add cache-m ...

  4. eclipse哪个版本好

    Eclipse IDE for Java EE Developers (企业级开发软件,干啥都足够了,300MB左右)

  5. Could not find or load main class org.apache.spark.deploy.yarn.ApplicationMaster

    Spark YARN Cluster mode get this error "Could not find or load main class org.apache.spark.depl ...

  6. web开发中xml的内容

    文档声明(注:文档声明前不能有注释) XML中的元素/标签 注:xmlx中解析程序会将其中的空格与换行当做内容来解析,区分大小写 CDATA区域中的内容不解析

  7. ubuntu安装sublime-text

    按照网上的教程, wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add - sudo apt ...

  8. gitlab提交代码

    cd existing_foldergit initgit remote add origin http://10.26.1.9/root/yunlian.gitgit add .git commit ...

  9. cmd运行java程序---路径容易出错的问题

    初学者在首次使用cmd运行java程序时面临着很多的问题,重要的基本为“设置环境变量过程”与运行过程中的“路径出错问题”.由于环境变量设置的网络分享更多,且为大众情况,因此比较容易解决!   由于本人 ...

  10. linux crontab详解 php开发相关

    vi vi /etc/crontab 注意不是这么直接干的! 下面是内容 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root ...