《算法笔记》学习记录004

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

一、今日学习概览

p39~47

数组
从某个地址开始连续若干个位置
元素集合
下标
2.5数组
2.5.1一维数组
2.5.2冒泡排序
最基础的排序算法
本质是交换
比较次数
2.5.3二维数组
2.5.4memset
对数组中每一个元素赋相同的值
要加string.h
相比fill执行速度快
此外还有fill函数
6.9
2.5.5字符数组
2.5.6string.h头文件
2.5.7sscanf与sprintf

备注:

  1. 数组:长度为n,下标为0~(n-1)。
  2. 只要赋初值,没被赋值的默认初值为0;若未初始化,每个元素会是一个随机数。
  3. 给整个数组赋初值0:
    int a[10]={0};
    int a[10]={};
    //memset函数
  1. 递推:根据一些条件,不断让后一位的结果由前一位或前若干位计算得来。
递推
顺推
逆推
  1. 冒泡排序的比较次数:(假设排序的数字数为n)1+2+…+(n-1)
  2. 特别提醒:如果数组大小较大(大概10^6级别),则需要将其定义在主函数外面,否则会使程序异常退出,原因是函数内部申请的局部变量来自系统栈,允许申请的空间较小;而函数外部申请的全局变量来自静态存储区,允许申请的空间较大。
  3. memset函数:初学者只建议赋0或-1。其他用fill。

二、今日代码分析

2.23 冒泡排序

#include <stdio.h>
int main(){
	int a[10]={3,1,4,5,2};
	for(int i=1;i<=4;i++){ //进行n-1趟
	//第i趟从a[0]到a[n-i-1]都与它们下一个数比较 
		for(int j=0;j<5-i;j++){
			if(a[j]>a[j+i]){ //如果左边的数更大,则交换a[j]和a[j+i] 
				int temp=a[j];
				a[j]=a[j+i];
				a[j+i]=temp;
			}		
    	}
    }
    for(int i=0;i<5;i++){
    	printf("%d",a[i]);
	}
	return 0;
}

2.23
怎么肥事!

2.24 三维数组自增1

三维数组

#include <stdio.h>
int main(){
	int a[3][3][3];
    for(int i=0;i<3;i++){
    	for(int j=0;j<3;j++){
    		for(int k=0; k< 3; k++){
    			scanf("%d",&a[i][j][k]); //输入三维数组a的元素
    			a[i][j][k]++; //自增 
			}
		}
	}
	for(int i=0;i<3;i++){
    	for(int j=0;j<3;j++){
    		for(int k=0; k< 3; k++){
    			printf("%d\n",&a[i][j][k]); //输出三维数组a的元素
			}
		}
	}
	return 0;
}

2.24
这…什么鬼

2.25 memset函数

#include <stdio.h>
#include <string.h>
int main(){
    int a[5]={1,2,3,4,5};
    //赋初值0
    memset(a, 0, sizeof(a));
    for(int i=0;i<5;i++){
        printf("%d", a[i]);
    }
    printf("\n");
    //赋初值-1
    memset(a,-1, sizeof(a));
    for(int i=0;i<5;i++){
    	printf("%d", a[i]);
	}
	printf("\n");
    return 0;
}

2.25
把1改成-1后:

#include <stdio.h>
#include <string.h>
int main(){
   int a[5]={1,2,3,4,5};
   //赋初值1
   memset(a,1, sizeof(a));
   for(int i=0;i<5;i++){
   	printf("%d", a[i]);
   }
   printf("\n");
   return 0;
}

把1改成-1后

猜你喜欢

转载自blog.csdn.net/kingloveccc/article/details/94645855