一、数组的基本知识

 #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. MySQL 在高并发下的 订单撮合 系统使用 共享锁 与 排他锁 保证数据一致性

    作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...

  2. bypass safedog upload

    这里附上两个payload: Content-Disposition: form-data; name=”up_picture”; filename=”[回车]1.php” Content-Dispo ...

  3. 关于vue-cli创建项目(小白)

    vue-cli,都说是vue脚手架,一般cli是命令行的意思,一看就知道与node有关,其实脚手架是建筑工用的工具,给工人踩在上面干活的,这里借用它的意思,我觉得应该叫vue平台工具大家更容易懂,毕竟 ...

  4. react子传父

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. python中文分词库——pyltp

    pyltp在win10下安装比较麻烦,因此参考以下安装方式, 1.下载 win10下python3.6 2.安装 下载好了以后, 在命令行下, cd到wheel文件所在的目录, 然后使用命令pip i ...

  6. 学习 yjango 博士的学习方法后的总结

    博士的初期内容主要是机器学习, 基于机器学习的理论来总结人类自身的学习过程和方式, 现总结博士视频中提到的主要方式 -.  学习的原则 例子重塑大脑 明确输入输出 用二阶知识拆分知识 二. 什么是学习 ...

  7. java异常处理解决方案

    一.异常概念 Throwable类是Java中所有错误或异常的超类. 1.只有当对象是此类(或其子类)的实例时,才能通过Java虚拟机或着Java throw语句抛出.     2.只有此类或其子类才 ...

  8. 格式化输出&初始编码&运算符

    一:格式化输出 %     %d   %s %为占位符   S替换的内容的类型为字符型 d替换的内容为整型 若在格式化输出的时候需要正常用到% 则表示时用两个%%表示 如: name = input( ...

  9. 消息摘要、哈希(hash)、加盐

    hashlib 算法介绍: python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度 ...

  10. python基础(10)-匿名函数&内置函数

    匿名函数 例子 返回两个数的和 def add(x, y): return x + y # 等价于 add = lambda x, y: x + y 返回字典中值最大的key dic = {'a': ...