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