算法笔记@Ada_Lake
算法笔记代码保留地~~~
冒泡循环
冒泡循环算是基础,但毕竟是基本算法,还是写在这里。
其本质就是交换
、
根据姥姥所说,大问题化小。可以看到就是交换。但两两交换要多少次,就要循环了
1.由前向后将最大数放至最后一位是一轮,则总共要执行多少轮呢?
即需要外层循环进行轮数判断。总共需要进行n-1次
2.一轮是如何将最大数放在最后一位的呢?是通过相邻两个之间相比较。
至此。冒泡循环结束
以下是代码
// Ada
#include<stdio.h>
#define N 6
int main(){
int temp;
int a[N] = {
1, 2, 3, 4, 5, 6};
for(int i = 1; i <= N-1; i++ ){
//
for(int j = 0; j <= j - i; j++){
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
for(int i = 0; i < N; i++){
printf("%d ", a[i]);
}
return 0;
}
三维数组
没太想清楚三维数组会怎样在操作台上表示出来,就直接输出。其实就是大的数组里套了一个小数组
以下是代码
// Ada
#include<stdio.h>
int main(){
int a[3][3][3] = {
{
{
1, 2, 3}, {
4, 5, 6}, {
7, 8, 9}}, {
{
1, 4, 7}, {
2, 5, 8}, {
3, 6, 9}}, {
{
1, 5, 9}, {
7, 5, 3}, {
4, 5, 6}}};
printf("\n");
for(int i = 0; i < 3; i++){
for(int j = 0; j <3; j++){
for(int k = 0; k < 3; k++){
printf(" %d ", a[i][j][k]);
}
printf("\n");
}
printf("\n");
}
return 0;
}
算法笔记@Ada_Lake
算法笔记代码保留地~~~
2.5小节——C/C++快速入门->数组
问题 A: 习题6-4 有序插入
- 题目描述 ,有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入到数组中。
假设数组长度为10,数组中前9个数(这9个数要求从键盘上输入,输入时要满足自小到大的输入顺序)已经按从小到大进行排序。
然后再从键盘上输入一个整数,将此整数插入到前有序的9个数中,使得最终的10个数依然是从小到大有序的。 - 输入,第一行输入以空格分隔的9个整数数,要求按从小到大的顺序输入。
第二行输入一个整数 - 输出,从小到大输出这10个数,每个数一行。
- 样例输入, 1 11 21 31 41 51 61 71 81
45 - 样例输出,
1
11
21
31
41
45
51
61
71
81
我的理解
1.先输入已排好序的数组
2.判断输入的数应该在哪个位置
3.这个位置包括这个位置之后的数依此向后挪一位,把这个数放进去
4.整个数组输出
**以下是代码**
// Ada
#include<stdio.h>
int main(){
int a[10], n, k, j = 0;
for(int i = 0; i < 9; i++){
scanf("%d ", &a