• 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 }
  • 相关阅读:
    前端常用模板引擎- artTemplate
    Vue-多级组件嵌套传值
    echarts图表常用到的设置
    react-基础入门分享
    vue中 export const 和 export default的区别
    vue安装依赖报错
    nvm-node版本控制工具
    gulp-入门
    vue 中使用 iconfont
    c3中基本动画
  • 原文地址:https://www.cnblogs.com/hzmbbbb/p/3888638.html
Copyright © 2020-2023  润新知