[c/c++] programming之路(14)、数组+冒泡和选择排序
一、数组的基本知识
#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)、数组+冒泡和选择排序的更多相关文章
- 基于python语言的经典排序法(冒泡法和选择排序法)
前 每逢周末就遇雨期,闲暇之余,捣鼓了下python,心心念想学习,今天就在电脑上装了个2.7,学习了下经典算法,冒泡与选择排序法 第一次写关于python的文章,说的不当之处,多多指正,我积极改正 ...
- java中级——二叉树比较冒泡和选择排序
上次我们说到二叉树排序比较,给出如下的题目 题目:创建五万个随机数,然后用分别用冒泡法,选择法,二叉树3种排序算法进行排序,比较哪种更快 废话不说直接上源码,可以看控制台结果 注意的是 需要我们需要上 ...
- python基础:冒泡和选择排序算法实现
冒泡排序和选择排序 首先引用一下百度百科对于冒泡算法的定义: 冒泡排序算法的原理如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素做同样的工作,从开始第一对到结尾 ...
- C语言之实现函数返回一个数组,以及选择排序,还有折半查找。这是同学的一个作业。。。
作业的具体要求如下: 编写一个完整的程序,实现如下功能.(1) 输入10个无序的整数.(2) 用选择排序法将以上接收的10个无序整数按从大到小的顺序排序.(3) 要求任意输入一个整数 ...
- C语言链表中数组实现数据选择排序,升序、降序功能主要难点
链表排序讲解: head指针指向链表的头结点,是找到整个链表的唯一依据,如果head指针丢失,整个链表就找不到了. head存储的是第一个节点的地址,head->next存储的是第二个节点的地址 ...
- Java基础【冒泡、选择排序、二分查找】
冒泡排序的思路就是前一个和后一个进行比较,如果大的就交换位置 大的数字后浮 如 12 8 5 31 第一轮 8 5 12 31 第二轮 5 8 ...
- StringBuffer、StringBuilder、冒泡与选择排序、二分查找、基本数据类型包装类_DAY13
1:数组的高级操作(预习) (1)数组:存储同一种数据类型的多个元素的容器. (2)特点:每个元素都有从0开始的编号,方便我们获取.专业名称:索引. (3)数组操作: A:遍历 public stat ...
- 【数组】—冒泡排序&&选择排序---【巷子】
/* 什么是冒泡排序:从头到尾比较相邻的两个数的大小,如果符合条件则进行比较 [注]:从小到大进行排序 假设有一个数组 var arr = [9,8,7,6,5,4]; 我们想要进行这个数组进行排序那 ...
- AJPFX:学习JAVA程序员两个必会的冒泡和选择排序
* 数组排序(冒泡排序)* * 冒泡排序: 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处* * 选择排序 : 从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现 ...
随机推荐
- Node bak
process.on('uncaughtException', function (err) { logger.info('Local Server Exception: ') logger.info ...
- php跨域发送请求原理以及同步异步问题
<script async type="text/javascript" src="http://lisi.com/data.php?flag=1"> ...
- APP安全在线检测
腾讯金刚审计系统 http://service.security.tencent.com/kingkong 免费 无限制 腾讯御安全 http://yaq.qq.com/ 免费 查看漏洞详情需认证 阿 ...
- elk-(七)
最终架构确定为 logs--->blieb--->redis/kafka--->logstash--->es--->kibana 注意: geoip下载地址: wge ...
- solr6.5.1搜索引擎的部署
目录结构如下: 6.5.1版本的solr已经集成有jetty服务器(在server目录下),所以可以直接启动solr应用. 1.java环境配置好(这里不再累赘). 2.打开cmd,路径切换到bin目 ...
- 快学Scala 第6章 对象 - 练习
1. 编写一个Conversions对象,加入inchesToCentimeters.gallonsToLiters和milesToKilometers方法. object Conversions { ...
- 安装WIN7/WIN10上的 CPU版本的TensorFlow
随手记 ancaconda Anaconda2-5.0.1-Windows-x86_64(python3.5 ancaconda python-3.5.2-amd64 安装TensorFlow的时候自 ...
- Axure RP 8过期,用户名和序列号(注册码)
用户名:axureuser 序列号:8wFfIX7a8hHq6yAy6T8zCz5R0NBKeVxo9IKu+kgKh79FL6IyPD6lK7G6+tqEV4LG 用户名:aaa注册码:2GQrt5 ...
- jenkins配置工程目录-启动case
1.我们在python里面编辑的脚本可以正常跑,但是在cmd里面跑就不行了,找不到自己定义的方法模块,这个时候我们要搞个环境变量 name : PYTHONPATH val : 工程目录路劲 ...
- a标签和p标签不能设置margin
经常会发现正常div的属性在a标签上或者p标签上都不管用,这是因为a标签和p标签都不是盒子模型. 例如: <div style="margin-top:5px;">&l ...