zoukankan      html  css  js  c++  java
  • 查找与排序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,冒泡排序

  • 相关阅读:
    关于心累的思考
    关于组件化开发的思考
    分页组建感想
    工作日记
    unload没有用
    今天很不开心
    select option
    reduce()用法
    $.each()用法
    MFC创建对话框组件对应变量并进行设置值(VS2010)
  • 原文地址:https://www.cnblogs.com/darrenji/p/4032582.html
Copyright © 2011-2022 走看看