排序算法2:冒泡排序

冒泡排序比较简单:

1.依次比较相连的两个元素,交换位置,大的往后推,最大的元素推到最后。

2.对剩下的元素,重复步骤1,2。

 

注意:参数传值的使用,值传递和引用传递。

MSDN:http://msdn.microsoft.com/zh-cn/library/9t0za5es(v=vs.90).aspx

形式参数都是在方法内部对参数进行操作,传递值类型是在内部复制一个副本,引用值类型包含的是对其数据的引用。

要对数据直接操作,可以加上引用变量ref。

 

 

控制台代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] myArray = new int[10];
            MakeMewArray(myArray);
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(myArray[i]);
            }
            Console.WriteLine("冒泡排序");
            BubleSort(myArray);
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(myArray[i]);
            }
        }

        /// <summary>
        /// 生成数组
        /// </summary>
        /// <param name="array"></param>
        /// <param name="arrayLength"></param>
        public static void MakeMewArray(int[] array)
        {
            System.Random random = new Random();
            for (int i = 0; i < array.Length; i++)
            {
                array[i] = random.Next(1000);
            }
        }


        /// <summary>
        /// 冒泡排序
        /// </summary>
        /// <param name="array"></param>
        public static void BubleSort(int[] array)
        {
            for (int j = array.Length; j > 0; j--)
            {
                for (int i = 0; i < array.Length - 1; i++)
                {
                    if (array[i] > array[i + 1])
                    {
                        //Swap(array[i], array[i + 1]);
                        Swap(ref array[i], ref array[i + 1]);
                        //Swap(array,i,i+1);
                    }
                }
            }
        }

        /// <summary>
        /// 数值交换,该函数值传递,引用数组元素的话没有用,a/b是传人的数组元素的副本。交换的只是局部变量a/b的值
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        public static void Swap(int a,int b)
        {
            int number = a;
            a = b;
            b = number;
        }

        /// <summary>
        /// 数值交换,该函数值传递
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        public static void Swap(ref int a,ref int b)
        {
            int number = a;
            a = b;
            b = number;
        }

        /// <summary>
        /// 数值交换
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        public static void Swap(int[] array,int a, int b)
        {
            int number = array[a];
            array[a] = array[b];
            array[b] = number;
        }
    }
}

 

posted @ 2013-12-18 17:18  鸡毛土人  阅读(206)  评论(0)    收藏  举报