• 两种冒泡排序方法调用的修改--一个方法同时实现两种排序


     class Program
        {
            /// <summary>
            /// 数组排序
            /// </summary>
            /// <param name="arr">数组</param>
            /// <param name="b">true为从小到大排列 false为从大到小排列</param>
            /// <returns>排序完的数组</returns>
            static int[] Method(int[] arr,bool b)//方法一,先去确定后边,从后往前排
            {//方法可以定义成无返回值,因为数组为引用类型,为传址,数组的参数值会发生变化
                for (int i = arr.Length - 1; i > 0; i--)
                {
                    for (int j = 0; j < arr.Length - 1; j++)
                    {
                        if (arr[j] > arr[j + 1] && b)//小到大的判断
                        {
                            int k = arr[j];
                            arr[j] = arr[j + 1];
                            arr[j + 1] = k;
                        }
                        if (arr[j] < arr[j + 1] && !b)//大到小的判断
                        {
                            int k = arr[j];
                            arr[j] = arr[j + 1];
                            arr[j + 1] = k;
                        }
                    }
                }
                return arr;
            }
            
            /// <summary>
            /// 数组排序方法
            /// </summary>
            /// <param name="arr">数组</param>
            /// <param name="b">true为从小到大排列 false为从大到小排列</param>
            /// <returns>排序完的数组</returns>
            static int[] Method2(int[] arr,bool b)//方法二,先确定前边数据,从前往后排
            {
                for (int i = 0; i < arr.Length - 1;i ++)
                {
                    for (int j = i ; j <= arr.Length - 1;j++)
                    {
                        if (arr[i] > arr[j] && b)
                        {
                            int k = arr[i];
                            arr[i] = arr[j];
                            arr[j] = k;
                        }
                        if (arr[i] < arr[j] && !b)
                        {
                            int k = arr[i];
                            arr[i] = arr[j];
                            arr[j] = k;
                        }
                    }
                }
                return arr;
            }
            static void Main(string[] args)
            {
                int[] arr = new int[18];
                for (int i = 0;i <= 17;i ++)
                {
                    Random rd = new Random();
                    Thread.Sleep(200);
                    arr[i] = rd.Next(100);
                }
                foreach (int i in arr)
                    Console.Write(i + " ");
                Console.Write("
    ");
                //利用方法一输出结果
                Console.WriteLine ("方法一输出从小到大:");
                arr = Method(arr,true);
                foreach (int i in arr)
                    Console.Write(i + " ");
                Console.WriteLine("
    方法一输出从大到小:");
                arr = Method(arr, false);
                foreach (int i in arr)
                    Console.Write(i + " ");
                //利用方法二输出结果
                Console.WriteLine("
    方法二输出从小到大:");
                arr = Method2(arr,true);
                foreach (int i in arr)
                    Console.Write(i + " ");
                Console.WriteLine("
    方法二输出从大到小:");
                arr = Method2(arr, false);
                foreach (int i in arr)
                    Console.Write(i + " ");
                Console.ReadLine();
            }
        }
    
  • 相关阅读:
    “字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛
    Codeforces Beta Round 77 (Div. 2 Only)
    Codeforces Round 263(Div. 2)
    Codeforces Round 262 (Div. 2)
    《Introduction to Algorithm》-chaper30-多项式与快速傅里叶变换
    算法专题-STL篇
    算法专题-暴力枚举篇
    初等数论及其应用——中国剩余定理
    初等数论及其应用——费马小定理
    《A First Course in Probability》-chape4-离散型随机变量-几种典型分布列
  • 原文地址:https://www.cnblogs.com/whytohow/p/4726429.html
Copyright © 2020-2023  润新知