zoukankan      html  css  js  c++  java
  • 华为编程大赛_将字符数组内的数字排序

    转自:http://www.cnblogs.com/justinzhang/archive/2012/04/22/2465061.html

    /*
     Author:JustinZhang
     Email:uestczhangchao@gmail.com
     Time:2012年4月22日16:08:42
     From:2012华为编程大赛下午组第二题
     */
     
     #include <iostream>
     #include <cstring>
     #include <iomanip>
     using namespace std;
     
     /*
     input[]是一个字符串,其中有数字、字母、特殊符号,要求把当中的数字递增排序;将结果存放在output[]中。
     如:ux0@9ab7yu2输出为:ux0@2ab7yu7
     思路:将input中把所有出现数字的位置记录下来,并且将所有出现的数字放到另外一个数组中进行排序,然后将排好序的
     数组,根据记录的有数字的位置,一个一个的插入到output中。
     
     */
     
     
     void mysort(char input[], char output[])
     {
         int m = strlen(input);
         int *location = new int [m];
         int *digital = new int [m];
         int digital_count = 0;
         int tmp = 0;
         //记录出现数字的位置,并且将数字集中到digital[]数组中
         for(int i=0; i<m; i++)
         {
             if(input[i]>='0' && input[i]<='9')
             {
                 location[digital_count] = i;
                 digital[digital_count] = input[i] - '0';
                 digital_count++;
             }
             output[i] = input[i];
         }
         //使用冒泡排序
         for(int i=1; i<digital_count; i++)
         {
             for(int j=i; j>0; j--)
             {
                 if(digital[j] < digital[j-1])
                 {
                     tmp = digital[j];
                     digital[j] = digital[j-1];
                     digital[j-1] = tmp;
                 }
             }
         }
         //将排好序的数组插入到output当中
         for(int i=0; i<digital_count; i++)
         {
             output[location[i]] = digital[i] + '0';
         }
         output[m] = '\0';//手工加上字符数组结束标志,因为字符数组不会自动在末尾加上结束符;
         delete [] location;
         delete [] digital;
     }
     
     
     int main()
     {
         int index = 0;
         char input[] = "u8x9@0ab7yu2";
         char *output = new char[strlen(input)+1];
         mysort(input,output);
         while(output[index] != '\0')
         {
             cout << output[index++];
         }
         cout << endl;
         delete [] output;
         return 0;
     }



  • 相关阅读:
    Namenode主节点停止报错 Error: flush failed for required journal
    IntelliJ IDEA2018.3 最新破解方法
    idea 中解决maven 包冲突的问题(maven helper)
    java中的守护线程
    synchronized锁住的是代码还是对象
    maven package,clean,install,compile命令
    设计模式——装饰者模式
    设计模式——观察者模式
    com.alibaba.fastjson.JSON对类对象的序列化与反序列化
    java8 Stream使用案例
  • 原文地址:https://www.cnblogs.com/youngforever/p/3104674.html
Copyright © 2011-2022 走看看