查找与排序05,冒泡排序

在体验了"选择排序"和"插入排序",本篇体验的是"冒泡排序",依次遍历数组中的元素,按照升序排列,如果前一个位置元素比后一个位置元素大,两者就交换位置。

自定义一个处理整型数组的类,包含添加、显示、清除及冒泡方法以及获取数组长度的属性。

    class MyIntArray
    {
        private int[] arr;
        private int upper; //最大索引
        private int index; //当前索引
        public MyIntArray(int size)
        {
            arr = new int[size];
            upper = size - 1;
            index = 0;
        }
        public int Length
        {
            get { return upper + 1; }
        }
        public void Insert(int ele)
        {
            arr[index] = ele;
            index++;
        }
        public void Display()
        {
            for (int i = 0; i <= upper; i++)
            {
                Console.Write(arr[i] + " ");
            }
        }
        public void Clear()
        {
            for (int i = 0; i <= upper; i++)
            {
                arr[i] = 0;
            }
            index = 0;
        }
        //冒泡排序:从最后一个索引开始倒数
        public void BubbleSort()
        {
            int temp;
            //从最大的索引开始往前遍历,直到索引为1的位置
            for (int i = upper; i >= 1; i--)
            {
                //从最小的索引开始往后遍历,直到当前元素
                for (int j = 0; j <= i - 1; j++)
                {
                    if (arr[j] > arr[j+1])
                    {
                        temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }
            }
        }
    }


以上,在冒泡方法中,从最后一个索引开始往前遍历,直到索引为1,然后遍历从索引为0的位置开始,到当前遍历元素的前一个位置,只要发现有左边元素大于右边元素,两者就交换位置。

 

客户端调用,在排序后再显示。

        static void Main(string[] args)
        {
            MyIntArray nums = new MyIntArray(10);
            Random r = new Random(100);
            for (int i = 0; i < nums.Length; i++)
            {
                nums.Insert(r.Next(100));
            }
            nums.BubbleSort();
            nums.Display();
        }

         

“查找与排序”系列包括:

查找与排序01,线性查找,时间复杂度,算法

查找与排序02,折半查找

查找与排序03,选择排序

查找与排序04,插入排序

查找与排序05,冒泡排序

posted @ 2014-10-18 09:36  Darren Ji  阅读(1776)  评论(0编辑  收藏  举报

我的公众号:新语新世界,欢迎关注。