数组选定界限分大小问题

已知一个采用顺序储存结构进行存储的线性表a,其中的元素都是互不相等的整数

设计一个算法,将线性表重新排列称为一个节点为界的两部分

前一部分元素都小于他,后一部分都大于他

/*
现在有一个数组
要求以第一个数为界限
把数组中大于该数的项放到右边
小于的放到左边 
*/ 
#include<stdio.h>
int main(){
    int a[7]={4,8,7,3,2,9,6};
    int n=7;
    int temp=a[0];
    int i=0,j=n-1;
    while(i<j)
    {
        while(a[j]>temp)
            j--;
        a[i++]=a[j];
        while(a[i]<temp)
            i++;
        a[j--]=a[i];
    }
    a[i]=temp;
    for(int i=0;i<n;i++)
        printf("%d\t",a[i]);
}

结果为

猜你喜欢

转载自www.cnblogs.com/oldfish123/p/12892065.html