摘要:效果图冒泡排序冒泡排序是一种排序算法就是把数字小的和数字大的进行位置的调换部分的公司招聘也拿来当做面试题为什么叫冒泡排序冒泡排序就是和水里面产生的气泡一样从小到大的慢慢的升起所以就叫冒泡排序完整代码排序
效果图:
冒泡排序:
冒泡排序 是一种 排序 算法 就是把 数字 小的和 数字 大的进行位置的调换 部分的公司招聘 也拿来当做 面试题 …
为什么叫冒泡排序?
冒泡排序就是 和水里面产生的气泡一样从小到大的慢慢的升起 所以就叫冒泡排序
完整代码:
排序
int[] arr = {12,18,4,6,80,10,14,12,66,19}; for (int i = 0; i < arr.Length; i++) { for (int j=0;j<arr.Length-1;j++) { //大于号就是 大 到 小 if (arr[i] < arr[j]) { int number = arr[i]; arr[i] = arr[j]; arr[j] = number; } } } foreach (int look in arr) { Console.Write(look+" "); } Console.ReadKey();
定义进行排序的数组:
升序: 小的数字到大的数字
降序: 大的 到 小的
int[] arr = {12,18,4,6,80,10,14,12,66,19};
可以看见现在的顺序是非常的凌乱的
使用循环体进行换位置:
for (int i = 0; i < arr.Length; i++) { for (int j=0;j<arr.Length-1;j++) { if (arr[i] < arr[j]) { int number = arr[i]; arr[i] = arr[j]; arr[j] = number; } } }
因为要进行 两个 元素的 对比 所以需要使用 两个循环体 进行 元素之间的对比
第一个循环跑一次 而内循环就需要跑 10次(根据元素的个数决定)
if (arr[i] < arr[j]) {int number = arr[i];arr[i] = arr[j]; arr[j] = number;
如果[i]号元素小于[j]号 两个元素之间就进行换位置 其中"number"是中间变量 存储[i]值
当然如果你想通过 不使用第三方 变量 进行交换 也可以这样
if (arr[i] < arr[j]) { arr[i] = arr[i]+arr[j]; arr[j] = arr[i]-arr[j]; arr[i] = arr[i] - arr[j]; }
额外知识:
不使用第三方 变量 进行 两个 变量的交换
int a =10;int b =20; a =a+b; b =a+b; a=a-b;
这样也可以达到一模一样的效果 原理还是那样 只是变的复杂了一点
但是不建议这里写 因为…简单的都变复杂化了
假设这是第一次循环:
i的每一个元素 j 都会一个个对比
上面演示的是 升序
降序:
//变成大于号if (arr[i] > arr[j]) {int number = arr[i]; arr[i] = arr[j]; arr[j] = number; }
变动一个符号即可
当然如果你是初学者,看不懂 双重 循环体 也可以使用Arrar的静态方法
进行
int[] arr = {12,18,4,6,80,10,14,12,66,19}; Array.Sort(arr); //一建对数组 进行升序的排序
效果一模一样
这个静态方法 提供了 升序的排序 但他没有提供 降序的方法
不过可以用他的另外一个方法 进行数组反转的 来达到一样的效果
int[] arr = {12,18,4,6,80,10,14,12,66,19};Array.Sort(arr); //升序排序 Array.Reverse(arr); //数祖反转达到 降序效果
数组最小值:
求一个数组里面的 最小 一位数
比较简单
int[] arr = {-12,18,4,26,100,10,14,12,66,-19}; int max = 0; for (int i = 0; i < arr.Length; i++) { //大于号就是 最大值 if (arr[i] <max) { max = arr[i]; } } Console.WriteLine(max); Console.ReadKey();
平均值:
整数/个数字
int[] arr = {-12,18,4,26,100,10,14,12,66,-19}; int max = 0; for (int i = 0; i < arr.Length; i++) { max +=arr[i]; } Console.WriteLine(max/arr.Length-1); Console.ReadKey();
练习题:
生成10个随机数 进行 升序排序 算出 最大值 最小值 平均值
答案:
Random r = new Random(); int[] arr = new int[10]; int average = 0; for (int i = 0; i < arr.Length; i++) { arr[i] = r.Next(-10,100); } for (int i = 0; i < arr.Length; i++) { average += arr[i]; for (int j = 0; j < arr.Length - 1; j++) { if (arr[i] < arr[j]) { int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } } } foreach (int number in arr) { Console.Write(number + " "); } Console.WriteLine("/n最小值是:" + arr[0]); Console.WriteLine("最大值是:" + arr[arr.Length-1]); Console.WriteLine("平均值是:" + (average / arr.Length - 1)); Console.ReadKey();
纯手打,点个赞呗~
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/125647.html
摘要:良好的排序算法具有进行最少的比较和交换的特征。冒泡排序是一个基于比较的排序算法,被认为是效率最低的排序算法之一。现在让我们使用实现冒泡排序算法。插入排序到目前为止,我们已经看到了两种基于比较的排序算法。 预警 本文适合对于排序算法不太了解的新手同学观看,大佬直接忽略即可。因为考虑到连贯性,所以篇幅较长。老铁们看完需要大概一个小时,但是从入门到完全理解可能需要10个小时(哈哈哈,以我自己...
摘要:最差情况输入数组按降序排列。平均情况稳定性稳定希尔排序排序法是对相邻指定距离称为增量的元素进行比较,并不断把增量缩小至,完成排序。若将两个有序表合并成一个有序表,称为二路归并。 冒泡排序 从数组中第一个数开始,依次遍历数组中的每一个数,通过相邻比较交换,每一轮循环下来找出剩余未排序数的中的最大数并冒泡至数列的顶端。 function bubbleSort(arr) { for (v...
摘要:代码实现六堆排序算法简介堆排序是指利用堆这种数据结构所设计的一种排序算法。九计数排序算法简介计数排序是一种稳定的排序算法。计数排序不是比较排序,排序的速度快于任何比较排序算法。 赞助我以写出更好的文章,give me a cup of coffee? 2017最新最全前端面试题 1、插入排序 1)算法简介 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它...
摘要:目录常见的八种排序常见的八种排序直接插入排序直接插入排序希尔排序希尔排序直接选择排序直接选择排序堆排序堆排序冒泡排序冒泡排序快速排序快速排序版本版本挖坑法挖坑法前后指针版前后指针版快速排序代码 目录 常见的八种排序 直接插入排序 希尔排序 直接选择排序 堆排序 冒泡排序 快速排序 hoar...
阅读 3739·2023-01-11 11:02
阅读 4247·2023-01-11 11:02
阅读 3056·2023-01-11 11:02
阅读 5185·2023-01-11 11:02
阅读 4743·2023-01-11 11:02
阅读 5539·2023-01-11 11:02
阅读 5319·2023-01-11 11:02
阅读 4003·2023-01-11 11:02