C# 入门算法“冒泡排序“ 升序 降序 最大值 最小值 平均值

Posted 生产队的驴.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 入门算法“冒泡排序“ 升序 降序 最大值 最小值 平均值相关的知识,希望对你有一定的参考价值。

效果图:

冒泡排序:
冒泡排序 是一种 排序 算法 就是把 数字 小的和 数字 大的进行位置的调换 部分的公司招聘 也拿来当做 面试题 …

为什么叫冒泡排序?
冒泡排序就是 和水里面产生的气泡一样从小到大的慢慢的升起 所以就叫冒泡排序

完整代码:
排序

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();

纯手打,点个赞呗~

以上是关于C# 入门算法“冒泡排序“ 升序 降序 最大值 最小值 平均值的主要内容,如果未能解决你的问题,请参考以下文章

C# 入门算法“冒泡排序“ 升序 降序 最大值 最小值 平均值

算法入门-从冒泡排序开始

C语言入门算法丨冒泡排序算法详解,绝不摆烂。

冒泡排序

经典排序算法——冒泡排序

冒泡排序(更新)