黑马程序员:以冒泡排序温习学过的知识

时间:2023-02-17 22:53:43

----------------------  ASP.Net+Android+IOS开发.Net培训、期待与您交流! ---------------------- 

冒泡排序:让数组中的元素两两比较(第i个元素与第i+1个元素),经过n(i-1)遍两两比较,数组中的元素能按照我们预期的规律排序。
//一般套路下的排序:
            //int[] score = { 12,13,15,4,8,46,78,45,78,4548,78,454548,77,44,1 };//首先定义一个数组


            //for (int i = 0; i< score.Length; i++)//循环遍历数组中的每一个数
            //{
            //    for (int j = i; j < score.Length; j++)//第t个数与数组中t后面的数依次比较
            //    {
            //        if (score[i] > score[j])//当第i个数比第j个数大时将两数交换位置,否则不变
            //        {
            //            int temp = score[i];//交换两数位置的方法
            //            score[i] = score[j];
            //            score[j] = temp;
            //        }
            //    }
            //}
            //for (int i = 0; i < score.Length; i++)//循环遍历数组,将数组中元素输出
            //{
            //    Console.Write(score[i]+" ");
            //}
            //Console.ReadKey();

冒泡排序在C#的众多排序方法中属于最基础和简单的,但是对于像我这样的初学者来说可以用来练习整合许多这段时间学到的知识,以下是以温习知识为目的自己编写的冒泡排序:

namespace 冒泡排序练习
{
    class Program
    {
        static void Main(string[] args)
        {
            Numbers();
            Console.ReadKey();  
       }
        
        //先把排序的方式定义,方便使用
        public static void PxStB(int[] n)//定义一个函数来对数组进行从小到大排序
            {
                for (int i = 0; i< n.Length; i++)//循环遍历数组中的每一个数
             {
                for (int j = i; j < n.Length; j++)//第t个数与数组中t后面的数依次比较
                {
                    if (n[i] > n[j])//当第i个数比第j个数大时将两数交换位置,否则不变
                    {                    
                        int temp = n[i];//交换两数位置的方法
                        n[i] = n[j];
                        n[j] = temp;
                    }
                }
             }
            
            }
         public static void PxBtS(int[] n)//定义一个函数来对数组进行从大到小排序
         {
             for (int i = 0; i < n.Length; i++)//循环遍历数组中的每一个数
             {
                 for (int j = i; j < n.Length; j++)//第t个数与数组中t后面的数依次比较
                 {
                     if (n[i] < n[j])//当第i个数比第j个数小时将两数交换位置,否则不变
                     {
                         int temp = n[i];//交换两数位置的方法
                         n[i] = n[j];
                         n[j] = temp;
                     }
                 }
             }


         }
         public static void Numbers()
         {
             int numberCount;
             int[] score;
             try//为避免用户不按指定格式输入导致程序无法继续使用try catch捕获异常
             {
                 Console.WriteLine("请问您要对多少个数字进行排序?");
                 numberCount = Convert.ToInt32(Console.ReadLine());//把用户输入的字符串转换为int类型
                 score = new int[numberCount];
                 Console.WriteLine("请输入您要进行排序的这{0}个数字:", numberCount);
                 for (int i = 0; i < numberCount; i++)
                 {
                     score[i] = Convert.ToInt32(Console.ReadLine());//把用户输入的字符串转换为int类型
                 }
                 Console.WriteLine("\n您要进行排序的{0}个数字为:", numberCount);
                 for (int i = 0; i < numberCount; i++)
                 {
                     Console.Write(score[i].ToString() + " ");
                 }
             Console.Write("从小到大排序为 ");
             PxStB(score);
             for (int i = 0; i < score.Length; i++)//循环遍历数组,将数组中元素输出
             {
                 Console.Write(score[i] + " ");
             }
             Console.Write("\n从大到小排序为 ");
             PxBtS(score);
             for (int i = 0; i < score.Length; i++)//循环遍历数组,将数组中元素输出
             {
                 Console.Write(score[i] + " ");
             }
             }
             catch
             {
                 Console.Write("请您按默认格式输入!! ");
             }
            
         }
    }
}

经过自己对这个冒泡排序的编写加深了自己对冒泡排序的理解,而且还温习了定义函数,字符串类型转换为int类型,try catch捕获异常,for循环以及数组,在其中也意识到原来照着老师代码抄留下的后遗症,获益良多。






----------------------  ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------