辉映苍穹俊如松


私信TA

用户名:dotcpp0792484

访问量:90

签 名:

失败不过重来而已,但绝境重生方为宿命

等  级
排  名 688
经  验 3956
参赛次数 6
文章发表 9
年  龄 18
在职情况 待业
学  校 贺州学校
专  业

  自我简介:

TA的其他文章

解题思路:1. 定义了一个函数  zhixing  ,用于执行快速排序中的一次划分操作,返回划分的基准位置。

2. 定义了函数  kp  ,用于对数组进行快速排序。

3. 在  main  函数中:

首先生成一个随机数种子。

输入一个整数  n  ,如果  n  为 0 则退出循环。

生成一个整数数组  p  ,并可以选择随机生成值或从输入获取值。

去除数组  p  中的重复元素,将不重复的元素存储在  temp  数组中,并记录不重复元素的个数  j  。

对  temp  数组进行快速排序。

输出不重复元素的个数和排序后的不重复元素。

注意事项:

参考代码:

#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

int zhixing(int *p,int low,int high){

    int i=low,j=high;

    int key=p[i];

    while(i<j){

        while(i<j&&p[j]>=key){

            j--;

        }

        if(i<j){

            p[i++]=p[j];

        }

        while(i<j&&p[i]<=key){

            i++;

        }

        if(i<j){

            p[j--]=p[i];

        }

    }

    p[i]=key;

    return i;

}

void kp(int *p,int low,int high){

    if(low<high){

        int key=zhixing(p,low,high);

        kp(p,low,key-1);

        kp(p,key+1,high);

    }

}

int main(){

    srand((int)time(0));

    int n;

    while(cin>>n){

        if(n==0){

            break;

        }

        int *v=new int[n];//看是否被访问过,被访问过 就置位1

        for(int i=0;i<n;i++){

            v[i]=0;

        }

        int p[n];

        for(int i=0;i<n;i++){

//            p[i]=rand()%1000+1;

//            cout<<p[i]<<" ";

              cin>>p[i];

        }

        for(int i=0;i<n;i++){

            if(v[i]==1){

                continue;

            }

            for(int j=i+1;j<n;j++){

                if(v[j]==0&&p[i]==p[j]){

                    v[j]=1;

                }

            }

        }

        int temp[n];

        int j=0;

        for(int i=0;i<n;i++){

            if(v[i]==1){

                continue;

            }else{

                temp[j++]=p[i];

            }

        }

        cout<<j<<endl;

        //快速排序

        kp(temp,0,j-1);

        for(int i=0;i<j;i++){

            cout<<temp[i]<<" ";

        }

        cout<<endl;

        cout<<endl;

    }

    return 0;

}

 

0.0分

0 人评分

  评论区

  • «
  • »