zoukankan      html  css  js  c++  java
  • 两种应该掌握的排序方法--------2.quick Sort

    介绍

    http://zh.wikipedia.org/wiki/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F

    用些里面的c++ 实现,感觉这个空间复杂度比较小。还挺好

     
    int partition(int* array, int left, int right)
    {
            int index = left;

            int pivot = array[index];


            swap(array[index], array[right]);
            for (int i=left; i<right; i++)
            {
                    if (array[i] > pivot)  // 降序
                            swap(array[index++], array[i]);
            }
            swap(array[right], array[index]);
            return index;

    }
     
    void qsort(int* array, int left, int right)
    {
            if (left >= right)
                    return;
            int index = partition(array, left, right);
            qsort(array, left, index - 1);
            qsort(array, index + 1, right);
    }

    //======================

    调用端

        int i_List_[] ={3, 7 ,8, 5, 2, 1, 9, 5, 4};
        int count_ = sizeof(i_List_)/4;
        qsort(i_List_, 0, count_-1);

    ===========


    void shellsort1_1(int *data, size_t size)
    {
    int index = 0;
    for (int gap = size / 2; gap > 0; gap /= 2)
    for (size_t i = gap; i < size; ++i)
    {
    int Temp = data[i];
    int j = 0;
    for (j = i - gap; j >= 0 && data[j] > Temp; j -= gap)
    {
    data[j + gap] = data[j];
    }
    data[j + gap] = Temp;

    printf("index=%d, ", index++);
    }


    }

    void bubble_sort(int* unsorted, unsigned int Length)
    {
    int index = 0;


    for (int i = 0; i < Length; i++)
    {
    for (int j = i; j < Length; j++)
    {
    if (unsorted[i] > unsorted[j])
    {
    int temp = unsorted[i];
    unsorted[i] = unsorted[j];
    unsorted[j] = temp;
    }
    printf("index=%d, ", index++);
    }
    }
    }

    int main()
    {

    int a[20];
    memset(a, 0, sizeof(int)*20);


    //shellsort1_1(a,20);//60
    bubble_sort(a,20);//400

    return 0;
    }

  • 相关阅读:
    Optimal Logging
    表单设计平台主要功能截图介绍
    表单设计器在线测试地址
    React-Native 之控件布局
    Week,Month, Year 日期区间辅助类
    WPF 文本框添加水印效果
    WPF 自定义窗口
    正则表达式总结
    基于Extjs的web表单设计器 第七节——取数公式设计之取数公式的使用
    基于Extjs的web表单设计器 第七节——取数公式设计之取数公式定义
  • 原文地址:https://www.cnblogs.com/scotth/p/3308455.html
Copyright © 2011-2022 走看看