• 数据结构3排序算法


    冒泡排序

      算法描述:排序问题是基本算法,主要有冒泡算法、插入排序以及选择排序算法。冒泡算法是对整个列进行多次遍历循环,直至将所有的数都比较一遍,每次循环都能产生一个最大数放置于后面,这样需要两层循环:外层控制次数,内层控制单次冒泡,内层针对的是相邻里两个进行比较的循环。

    using System;
    
    class CArray
    {
        private int[] arr;
        private int upper;
        private int numElements;
    
        public CArray(int size)
        {
            arr = new int[size];
            upper = size - 1;
            numElements = 0;
        }
    
        public void Insert(int item)
        {
            arr[numElements] = item;
            numElements++;
        }
    
        public void DisplayElements()
        {
            for (int i = 0; i <= upper; i++)
            {
                Console.Write(arr[i]+" ");
            }
        }
    
        public void Clear()
        {
            for (int i = 0; i <= upper; i++)
            {
                arr[i] = 0;
                numElements = 0;
            }
        }
    
        static void Main()
        {
            CArray nums = new CArray(10);
            Random rnd = new Random();
            for (int i = 0; i <=nums.upper; i++)
            {
                nums.Insert(rnd.Next(0,100));
            }
            nums.DisplayElements();
            Console.ReadLine();
            nums.InsertionSort();
            Console.ReadKey();
        }
    
        //冒泡法排序
        public void BubbleSort()
        {
            int temp;
            for (int outer = upper; outer >0; outer--)
            {
                for (int inner = 0; inner < outer; inner++)
                {
                    if (arr[inner]>arr[inner+1])
                    {
                        temp = arr[inner];
                        arr[inner] = arr[inner + 1];
                        arr[inner+1] = temp;
                    }
                }
                this.DisplayElements();
                Console.Write("\n");
            }
    
    
        }
    
        //选择排序 每次从外层循环选择一个数,作为内层循环的初始化数,内层是将这个数从outer
      //的地方开始循环比较出现在的最小的,然后把这个索引值存放起来,内层循环一次就交换
      //至outer所在的数字.
        public void SelectionSort()
        {
            int min,temp;
            for (int outer = 0; outer < upper; outer++)
            {
                min=outer;
                for (int inner = outer+1; inner <= upper; inner++)
    			{
                    if (arr[inner]<arr[min])
                    {
                        min=inner;
                    }
    			}
                temp = arr[outer];
                arr[outer] = arr[min];
                arr[min] = temp;
                this.DisplayElements();
                Console.Write("\n");
            }
        }
    
        //插入排序
      //插入排序是用的最小的循环,在内层循环用while每次取外面一个数进行比较,从outer位置开始交换位置,直至
      //找到自己合适的位置
        public void InsertionSort()
        {
            int inner, temp;
            for (int outer = 1 ; outer <= upper; outer++)
            {
                temp = arr[outer];
                inner = outer;
                while (inner>0 && arr[inner-1]>temp)
                {
                    arr[inner] = arr[inner - 1];
                    inner -= 1;
                }
                arr[inner] = temp;
                this.DisplayElements();
                Console.Write("\n");
            }
        }
    }
    

    纸上得来终觉浅,绝知此事要躬行
  • 相关阅读:
    display、box-sizing,position有哪些值?
    css伪类与伪元素
    HTML基础(一)——一般标签、常用标签和表格
    C#处理猜拳问题(非窗体)
    C#语言基础——结构体和枚举类型
    C#语言基础-类——string增加内容
    C#解决验证码问题
    C#ArrayList集合——小例题
    C#语言基础——特殊集合
    http请求访问响应慢问题解决的基本思路
  • 原文地址:https://www.cnblogs.com/d2ee/p/1857796.html
Copyright © 2020-2023  润新知