zoukankan      html  css  js  c++  java
  • partition函数两种实现方法

    patition函数根据某种比较关系将数组分成两部分,下面根据元素比某个数字大或小,以此为基准划分,给出两种实现方式

    1)若数组为a[0]~a[n-1],函数调用如下

     partition(a,-1,n-1)a[n-1]一般作为基准元素所在的位置,返回基准元素应该放置的下标

    int partition(int *a, int i, int j, int pivot){
    	do{
    		while (a[++i] < pivot);
    		while ((j > 0) && (a[--j] >= pivot));
    		swap(a, i, j);
    	} while (i < j);
    	swap(a, i, j);
    	return i;
    }
    

    2)基于循环的partition元素,把比基准元素小的放在数组前面

     1 int partition(int *a, int start, int end){
     2     //首先注意最主要的情况,再注意特殊情况,如start和end相同,
     3     if (start == end) return -1;
     4     //找到随意下标
     5     int randomIndex = randomlyfind(start, end);
     6     //将随意值放在最后
     7     swap(a, end, randomIndex);
     8     //比较,将比随意值小的数放在其左边,交换随意值,返回随意值原本位置
     9     int small = start-1;
    10     for (int index = start; index < end; index++){
    11         if (a[index] < a[end]){
    12             small++;
    13             if (small < index){
    14                 swap(a, small, index);
    15             }
    16         }
    17     }
    18     small++;
    19     swap(a, small, end);
    20     return small;
    21 
    22 }
  • 相关阅读:
    实习第五十七天
    武汉第五十六天
    武汉第五十五天
    常用环境配置
    http 基本验证(nginx)
    nginx configuration
    docker run demo
    初识Hadoop
    大数据简介
    HDFS 存放策略
  • 原文地址:https://www.cnblogs.com/hzmbbbb/p/3888638.html
Copyright © 2011-2022 走看看