《数据结构》-Chapter7-2-排序应用算法

双向冒泡

void BubbleSort_D(int[] a){
    int low=0;
    int high=a.length();
    bool flag=true;
    while(low<high && flag){
        flag=false;
        for(i=low;i<high;i++){
            if(a[i]>a[i+1]){
                swap(a[i],a[i+1]);
                flag=true;
            }
        }
        high--;
        for(i=high;i>low;i--){
            if(a[i]<a[i-1]){
                swap(a[i],a[i-1]);
                flag=true;
            }
        }
        low++;
    }
}

线性表顺序存储,每个元素都不相同,设计把所有奇数移动到所有偶数前边的算法

void move(int[] a){
    int i=0;
    int j=a.length();
    while(i<j){
        while(i<j && a[i]%2!=0) i++;
        while(i<j && a[j]%2!=1) j--;
        if(i<j){
            swap(a[i],a[j]);
            i++;
            j--;
        }
    }
}

编写一个算法使之能在数组中找出第k小的元素

int kth_elem(int[] a,int low,int high,int k){
    int p=a[low];
    int low_temp=low;
    int low_high=high;
    while(low<high){
        while(low<high && a[high]>=p)
            high--;
            
        a[low]=a[high];
        while(low<high && a[low]<=p)
            low++
    }
    a[low]=p;
    if(low==k) return a[low];
    else if(low>k) return kth_elem(a,low_temp,low-1,k);
    else return kth_elem(a,low+1,high_temp,k-low);
}

int setPartition(int[] a){
    int p,i;
    int low=0,low_temp=0;
    int high=n-1,high_temp=n-1;
    bool flag=true;
    int k=n/2;
    int sum_pre=0,int sum_post=0;
    while(flag){
        p=a[low];
        while(low<high){
            while(low<high && a[high]>=p) --high;
            if(low!=high) a[low]=a[high];
            while(low<high && a[low]<=p) ++low;
            if(low!=high) a[high]=a[low];
        }
        a[low]=p;
        if(low==k-1) flag=0;
        else{
            if(low<k-1){
                low_temp=++low;
                high=high_temp;
            }
            else{
                high_temp=--high;
                low=low_temp;
            }
        }
    }
    for(i=0;i<k;i++) sum_pre+=a[i];
    for(i=k;i<n;i++) sum_post+=a[i];
    return sum_post - sum_pre;
}
发布了52 篇原创文章 · 获赞 1 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/m0_37302219/article/details/104308928