zoukankan      html  css  js  c++  java
  • qsort

      qosrt的这种写法,很简单,也很好理解。

      一开始没看懂,因为这一句swap(v, left, (left + right)/2); 后来转念一想,不是把left当成分割点,而是把(left+right)/2当分割点,恍然大悟。

      代码如下:

    #include <stdio.h>
    
    void swap(int v[], int i, int j) {
        int t = v[i];
        v[i] = v[j];
        v[j] = t;
    }
    
    void qsort(int v[], int left, int right) {
        int i, last;
    
        if(left >= right)
            return ;
        swap(v, left, (left+right)/2);
        last = left;
        for (i = left+1; i<=right; i++)
            if (v[i] < v[left])
                swap (v, ++last, i);
        swap(v, left, last);
        qsort(v, left, last-1);
        qsort(v, last+1, right);
    }
    
    int main(){
     //  int a[] = {-1, 32, 5, 1, 4}, i;
        int a[] = {32, -1, 5, 1, 4}, i;
    
        qsort(a, 0, 4);
    
        for (i=0; i<=4; i++) {
            printf("%d ", a[i]);
        }
    
        putchar('
    ');
    
        return 0;
    }
  • 相关阅读:
    数组字典
    字符串创建
    不可变数组
    数组
    纯净控制台
    可变字典
    数组Array
    id NSObject instanceType 区别
    可变字符串 插入,删除,替换,赋值
    查询字符串中某部分的字符串
  • 原文地址:https://www.cnblogs.com/tanhehe/p/3244387.html
Copyright © 2011-2022 走看看