去重与排序

来源:互联网 发布:网络与新媒体专业大学 编辑:程序博客网 时间:2024/05/01 09:03

input:

10

20 40 32 67 40 20 89 300 400 15

ouput:

15 20 32 40 67 89 300 400


Methods: 

1. 先将这n个数字去重,再进行从小到大排序并输出,可以通过桶排序来解决. 时间复杂度是O(N+M). 

Code:
#include <stdio.h>#include <stdlib.h>int main(){int book[1001];int n, i, t;for(i = 0; i < 1001; ++i){book[i] = 0;}scanf("%d", &n);for(i = 0; i < n; ++i){scanf("%d", &t);book[t] = 1;}for(i = 0; i < 1001; ++i){if(1 == book[i]){printf("%d ", i);}}system("pause");return 0;}


2. 先从小到大排序,比如用冒泡排序,输出结果的时候再去重. 时间复杂度由冒泡排序O(N^2) 和 读入输出都是O(N),因此整个时间复杂度O(N^2+2N),也即O(N^2).
Code:
#include <stdio.h>#include <string.h>#include <stdlib.h>int main(){    int book[1001];    int n, i, j, t;scanf("%d", &n);    for (i = 0; i < n; ++i)    {    scanf("%d", &book[i]);    }    /// Bubble sort    for (i = 0; i < n-1; ++i)    {    for (j = 0; j < n-i; ++j)    {    if (book[j] > book[j+1])    {    t = book[j];    book[j] = book[j+1];    book[j+1] = t;    }    }    }    printf("%d ", book[0]);    for(i = 1; i < n; ++i)    {    if(book[i] != book[i-1])    {    printf("%d ", book[i]);    }    }    system("pause");    return 0;}


0 0
原创粉丝点击