zoukankan      html  css  js  c++  java
  • N个大小不等的自然数排序,时间复杂度为O(n),空间复杂度为O(1)

    有N个大小不等的自然数(1,2,3,…..N)请将它们从小到大排列。算法要求:时间复杂度为O(n),空间复杂度为O(1)。请简要说明你采用的排序算法并写出c的伪代码。

     1 // 计数排序.cpp : 定义控制台应用程序的入口点。
     2 //有N个大小不等的自然数(1,2,3,…..N)请将它们从小到大排列。算法要求:时间复杂度为O(n),空间复杂度为O(1)
     3 
     4 #include "stdafx.h"
     5 #include <stdio.h>
     6 
     7 void counting_sort(int A[],int N)
     8 {
     9     int C[100],i,j;
    10     int B[100];
    11     for(i=1;i<=N;i++)
    12         C[i]=0;
    13     for(j=0;j<N;j++)
    14         C[A[j]]+=1;
    15     for(i=2;i<=N;i++)
    16         C[i]=C[i-1]+C[i];
    17     for (j=N-1;j>=0;j--)
    18     {
    19         B[C[A[j]]]=A[j];
    20         C[A[j]]-=1;
    21     }
    22     for(int k=0;k<N;k++)
    23         A[k]=B[k+1];
    24 }
    25 
    26 void main()
    27 {
    28     int a[]={5,3,6,1,4,2,7};
    29     int n=sizeof(a)/sizeof(a[0]);
    30     for(int k=0;k<n;k++)
    31         printf("%2d",a[k]);
    32     printf("\n");
    33     counting_sort(a,n);
    34     for(int k=0;k<n;k++)
    35         printf("%2d",a[k]);
    36 }
  • 相关阅读:
    Haproxy 【转载】
    Nginx介绍
    Day 13 进程和线程
    运维第一课
    面试bb
    Day 12 字符串和正则表达式
    Day 11 文件和异常
    Day10 图形用户界面和游戏开发
    Day9 面向对象进阶
    day8 面向对象编程基础
  • 原文地址:https://www.cnblogs.com/xingele0917/p/2711624.html
Copyright © 2011-2022 走看看