效果图:
冒泡排序:
冒泡排序 是一种 排序 算法 就是把 数字 小的和 数字 大的进行位置的调换 部分的公司招聘 也拿来当做 面试题 …
为什么叫冒泡排序?
冒泡排序就是 和水里面产生的气泡一样从小到大的慢慢的升起 所以就叫冒泡排序
完整代码:
排序
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();
纯手打,点个赞呗~