zoukankan      html  css  js  c++  java
  • 交换排序-冒泡排序和快速排序

    1.冒泡排序

    两个循环是关键

      第一个是冒泡执行的趟数,规则是N个数字,执行N-1趟排序

      第二个是从后向前一次比较的循环

      算法实现如下:

            //冒泡排序算法
            static List<int> BubbleSort(List<int> list)
            {
                int temp;
                //第一层循环: 表明要比较的次数,比如list.count个数,肯定要比较count-1次
                for (int i = 0; i < list.Count - 1; i++)
                {
                    //第二层循环:从后向前依次进行两两比较
                    for (int j = list.Count - 1; j > i; j--)
                    {
                        //如果前面一个数大于后面一个数则交换
                        if (list[j - 1] > list[j])
                        {
                            temp = list[j - 1];
                            list[j - 1] = list[j];
                            list[j] = temp;
                        }
                    }
                }
                return list;
            }

    2.快速排序

    设计算法中分治和递归

    具体怎么算的看下面

    http://developer.51cto.com/art/201403/430986.htm

    算法实现如下:

    static void MyQuickSort(int left,int right,int[] a)
            {
                int i, j, t, temp;
                if (left > right)
                    return;
    
                temp = a[left]; //temp中存的就是基准数 
                i = left;
                j = right;
                while (i != j)
                {
                    //顺序很重要,要先从右边开始找 
                    while (a[j] >= temp && i < j)
                        j--;
                    //再找右边的 
                    while (a[i] <= temp && i < j)
                        i++;
                    //交换两个数在数组中的位置 
                    if (i < j)
                    {
                        t = a[i];
                        a[i] = a[j];
                        a[j] = t;
                    }
                }
                //最终将基准数归位 
                a[left] = a[i];
                a[i] = temp;
    
                MyQuickSort(left, i - 1,a);//继续处理左边的,这里是一个递归的过程 
                MyQuickSort(i + 1, right,a);//继续处理右边的 ,这里是一个递归的过程 
        
            }
  • 相关阅读:
    django:开发一个下载图片的接口
    django:cbv模式和fbv模式的区别
    java生成二维码/java解析二维码
    java如何台生成二维码详解
    html5 WebSocket的Js实例教程
    vue 组件传参
    Vue路由注意事项
    Vue全家桶
    浅谈vue对seo的影响
    vue打包详情
  • 原文地址:https://www.cnblogs.com/dcz2015/p/5276311.html
Copyright © 2011-2022 走看看