一共三种方式 1 先查重在排序

2 先排序再查重

3 统计排序

111

先查重在排序

#include

int a[101010];

using namespace std;

int main () //小明的随机数 先查重再排列

{

int n;

cin>>n;

int m = 0;

for(int i = 0 ; i <n;i++)
                          
{
                          
	int x;
                          
	cin>>x;//输入序列中的每一个数

	int flag = 1;//标记是否重复出现 

	for(int j = 0;j<m;j++)//查重完的被存到该序列,m为序列长度
                                              
	{
                                              
		if(a[j] == x)//如果这个a【j】被存过,标记一下
                                              
		{
                                              
			flag = 0 ;//标记为0
                                              
			break;
                                              
		 } 
                                              
	 } 
                                              
	 if(flag == 1) a[m++] = x;//没被存过存到m中,m++
                                              
}
                                              

三种排序方式

1)1 第一个位置开始扫描,找到后面最小的,交换

 2 第二个位置开始扫描,找到第二个位置后面最小的,交换
                                              
 以此类推到第n个就不用向后扫了。
                                              
for(int i = 0 ; i<m-1;i++)

{

	int pos = i;

	for(int j = i ;j<m;j++)
                            
	    if(a[j]<a[pos])pos = j;//找到后面最小的那个数的位置 

	swap(a[pos],a[i]);//交换 

 } //交换完成

2)冒泡排序(大的一直往上面浮)

 for(int i = 0 ;i<m-1;i++)
                           
 {
                           
 	for(int j = 0 ;j<m-i-2;j++)(如果最大的浮上去了,那么最后的位置后背一次占领)

 	{

 		if(a[j]>a[j+1])swap(a[j],a[j+1]);(j+1包含了最后一个数)

	 }

  } 

3)插排

       for(int i = 1 ; i<m;i++)
                                
       {
                                
       	int pos,x = a[i];
                                
       	for(pos = 0 ;pos<i;pos++)//

查找i前面的数有没有比它大的从第二个开始查,不用担心会漏,i前面的数一直都按大小有序排列,哪里刚好大一 点,直接平移插到这个数的地址上,这个数包括后面的数集体向后移动一位

       	{

       		if(a[pos] > x)break;//找到了

		for(int j = i - 1;i>=pos;j--)

		    a[j+1]=a[j]

        a[pos] =x ;

	   }

222222

先排序再查重

排序按上面三种格式

查重只需要判断从第二个数开始和前面的数是否不同,不同就输出。

3333333

统计排序

快排模板