您的位置:首页 > 健康 > 养生 > seo搜索引擎的优化_手机网站制作_阿里指数怎么没有了_优化系统软件

seo搜索引擎的优化_手机网站制作_阿里指数怎么没有了_优化系统软件

2025/4/2 5:46:22 来源:https://blog.csdn.net/lb3636363636/article/details/143624340  浏览:    关键词:seo搜索引擎的优化_手机网站制作_阿里指数怎么没有了_优化系统软件
seo搜索引擎的优化_手机网站制作_阿里指数怎么没有了_优化系统软件

适合对象c语言初学者。

冒泡选择法

作用对一个数组进行排序。(介绍一下数组(c基础)(详细版)-CSDN博客)

核心要点

1: 数组元素个数 sz

2: 比较后的交换。

核心思路

进行(sz - 1)趟,每一趟把最大数的放到末尾。其余数向前挪一个。

代码产生

1:先创建一个无序数组。

2:进行第一趟排序

那么如何比较与挪一个呢?

比较很简单。

只需挨着的两个比就行。

于是我们创建一个变量方便访问数组中的一个数。

其实挪一个只需让值交换就行

这就相当与交换a与b的值,只是变成数组了。

于是有

此时就完成了一趟排序。介绍一下for break continue 函数(c基础)_for语句中continue跳过表达式三吗-CSDN博客

结果为

观察发现5变到后面了。

易发现:最大数到末尾后,便不在管他。产生新的末尾与最大数

于是我们创建新的变量表示循环趟数。

开始循环

欧克,很简单,相较于上次,只是套了一个循环而已。

运行结果:

ok.

但我们真的一定需要(5 - 1)(sz-1)趟吗?

经观察发现不是。

如果我把5改成4呢

显而易见,可以。

于是我们可以优化一下。

当他是顺序时就跳出循环。总结一下break continue(c基础)_简述跳转语句break与continue的作用和区别。段落格式字体字号-CSDN博客

于是我们想把break;插进去。

进行交换 break;就不产生作用,反之就产生。

于是考虑到用if语句。简单介绍一下 if else else if 函数(c基础)_if else算函数吗-CSDN博客

if要一个(),所以创建一个变量。

显然if语句要在交换后面。

当交换时为假,反之为真

于是进去时把flag变为真

如果进行交换,把flag值变为假。

这样当他是顺序时显然不会进行交换了。

(对36有疑问,c语言中真假情况_cyy数轴内打印真假-CSDN博客)

结果:

归纳为一般情况

先求数组元素个数sz

把5改成sz即可。

如下

#include<stdio.h>
int main()
{//创建一个无序数组。int arr[] = { 5,2,0,3,6 };//求数组元素个数int sz = 0;sz = sizeof(arr) / sizeof(arr[0]);//进行第一趟排序。//创建一个变量方便访问数组中的一个数。int j = 0;//开始比较for (j = 0; j < sz - 1; j++){if (arr[j] > arr[j + 1]){int temp = 0;temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}//创建一个新的变量表示循环趟数。int i = 0;//创建一个变量控制break;int flag = 0;for (i = 0; i < sz - 1; i++)//开始比较for (j = 0; j < sz - 1; j++){//把flag的值变为真。flag = 36;if (arr[j] > arr[j + 1]){int temp = 0;temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;//把flag的值变为假。flag = 0;}if (flag)	break;}for (j = 0; j < 5; j++)printf("%d ", arr[j]);return 0;
}

下面是创建随机数,进行排序的代码(拓展)

//生成随机数填数组再排序
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define NUM 3
int main()
{int arr[NUM];int i = 0;srand((unsigned int)time(NULL));for (i = 0; i < NUM; i++){arr[i] = rand() % 100 + 1;}int n = 0;for (n = 1; n < NUM - 1; n++){int j = 0;int flag = 0;for (j = 0; j < NUM - n; j++){flag = 0;if (arr[j] > arr[j + 1]){arr[j] = arr[j] + arr[j + 1];arr[j + 1] = arr[j] - arr[j + 1];arr[j] = arr[j] - arr[j + 1];flag = 1;}}if (0 == flag) break;}for(i = 0; i < NUM; i++)printf("%d\n", arr[i]);return 0;
}

看了就行。

介绍一下如何生成随机数(c基础)-CSDN博客

Hi I am 36,thanks for your reading.I am looking forward your 👍.

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com