zoukankan      html  css  js  c++  java
  • 快速排序-移动单边指针

    /* C implementation QuickSort */
    #include<stdio.h>
    
    // A utility function to swap two elements
    void swap(int* a, int* b)
    {
        int t = *a;
        *a = *b;
        *b = t;
    }
    
    /* This function takes last element as pivot, places
    the pivot element at its correct position in sorted
        array, and places all smaller (smaller than pivot)
    to left of pivot and all greater elements to right
    of pivot */
    int partition (int arr[], int low, int high)
    {
        int pivot = arr[high]; // pivot
        int i = (low - 1); // Index of smaller element
    
        for (int j = low; j <= high- 1; j++)
        {
            // If current element is smaller than or
            // equal to pivot
            if (arr[j] < pivot)
            {
                i++; // increment index of smaller element
                swap(&arr[i], &arr[j]);
            }
        }
        swap(&arr[i + 1], &arr[high]);
        return (i + 1);
    }
    
    /* The main function that implements QuickSort
    arr[] --> Array to be sorted,
    low --> Starting index,
    high --> Ending index */
    void quickSort(int arr[], int low, int high)
    {
        if (low < high)
        {
            /* pi is partitioning index, arr[p] is now
            at right place */
            int pi = partition(arr, low, high);
    
            // Separately sort elements before
            // partition and after partition
            quickSort(arr, low, pi - 1);
            quickSort(arr, pi + 1, high);
        }
    }
    
    /* Function to print an array */
    void printArray(int arr[], int size)
    {
        int i;
        for (i=0; i < size; i++)
            printf("%d ", arr[i]);
        printf("n");
    }
    
    // Driver program to test above functions
    int main()
    {
        int arr[] = {10, 7, 5, 9, 1, 5};
        int n = sizeof(arr)/sizeof(arr[0]);
        quickSort(arr, 0, n-1);
        printf("Sorted array: n");
        printArray(arr, n);
        return 0;
    }
    MySQL限时解答,24小时内友哥专业解答
    http://www.yougemysqldba.com
    如有进一步需要请联系微信onesoft007
    微博账号@友哥一指
  • 相关阅读:
    图像处理---平滑处理(柔化效果)
    图像处理---椒盐噪声(杂点效果)
    图像处理--曝光、霓虹(照亮边缘效果)
    图像处理---灰度处理(黑白效果)
    图像处理---染色
    javascript基础篇:表达式
    javascript基础篇:函数
    前端开发神器罗列
    杂谈篇:阅读优秀代码是提高开发人员修为的一种捷径
    杂谈篇:JavaScript开发规范要求
  • 原文地址:https://www.cnblogs.com/youge-OneSQL/p/9502335.html
Copyright © 2011-2022 走看看