`
where
  • 浏览: 81729 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

实习路上的各种题(2)

阅读更多

题目:

“编写函数int[]alphaOrder(int n),返回按字典排序的数字1~n”

例如n=12,返回[1,10,11,12,2,3,4,5,6,7,8,9]

      当时一看这题有点蒙了,首先过分纠结于“字典排序“这几个字眼,而忽略了题目本身,导致当时我这个题目尽然空着。下来再想想这个题目其实单纯从给出一个答案的角度看真不难。

先上一段我实现的代码:

 

public class AlphaOrder {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		AlphaOrder ao = new AlphaOrder();
		int[] result =  ao.alphaOrder(12);
		for(int i =0;i<result.length;i++){
			System.out.print(result[i]+",");
		}

	}
	/**
	 * 传入一个数作为数组长度,产生一个字典排序后的数组
	 * @param n
	 * @return
	 */
	private int[] alphaOrder(int n){
		int [] a = new int[n];
		String [] temp = new String[n];//作为中间数组
		String s;
		
		//生成原始数组
		for(int i=1;i<=n;i++){
			temp[i-1] =""+i;
		}
		//借用String的CompareTo()方法进行字典排序
                //这里用两个层嵌套不好,针对本题对有规律的整型数排序一层就够
                //这样时间复杂度可以由O(n2)减为O(n)
		for(int i=0;i<temp.length;i++){
			for(int j = 1;j<temp.length;j++){
				int com = temp[j].compareTo(temp[j-1]);
				System.out.println(temp[j]+"compareTo"+temp[j-1]+"的结果是:"+temp[j].compareTo(temp[j-1]));
				if(com<0){
					s=temp[j-1];
					temp[j-1] = temp[j];
					temp[j] = s;
				}
			}
		}
		//将字符串数组转化成整型数组
		for(int i = 0;i<n;i++){
			a[i] = Integer.parseInt(temp[i]);
		}
		return a;
		
	}

}

 测试的结果:

 

 

1,10,11,12,2,3,4,5,6,7,8,9

 谈谈对这个题的思考:

 

        这个体大的不好就在于一点就是”纠结于怎么实现”字典排序“,而忽略了String类已经为我们提供了这样  的方法“后来我又想了想,导致这个状况可能有这么几个原因:

      1)开始的思路是不对的当时压根就没往这方面想

      2)在学习的时候做的不够细,手边常用的还行,那些做项目中没接触过的可能就不那么熟悉,就比如”字典排序“String的”compareTo“方法,可能就局限与知道,连熟悉可能都谈不上。

public int compareTo(String anotherString) {
      int len1 = count;
      int len2 = anotherString. count;
      int n = Math. min(len1, len2);
      char v1[] = value;
      char v2[] = anotherString. value;
      int i = offset;
      int j = anotherString. offset;

      if (i == j) {
         int k = i;
         int lim = n + i;
         while (k < lim) {
           char c1 = v1[k];
           char c2 = v2[k];
           if (c1 != c2) {
              return c1 - c2;
          }
          k++;
         }
     } else {
         while (n-- != 0) {
           char c1 = v1[i++];
           char c2 = v2[j++];
           if (c1 != c2) {
              return c1 - c2;
          }
         }
     }
      return len1 - len2;
    }

 

      3)看源码,可能对一些常用类的方法平时我就只局限于用的程度,没有认真地想想或看看具体的实现,以后在这方面可能会多留心,尽量做到"不仅知其然还要知其所以然"

      4)  前路漫漫,任重道远,加油吧”少年“时间不早了就先写到这(晚安,各位看官!!!)

 

 

 

 

 

 

 

0
1
分享到:
评论

相关推荐

    c++ 课程实习题 c++ 课程实习题 c++ 课程实习题 c++ 课程实习题

    2. **理解面向对象编程**:实习题会涉及到类的创建、对象的实例化以及成员函数的使用,帮助学生理解面向对象编程的核心思想。 3. **实践编程技巧**:实习题目通常包含一些复杂问题,需要学生运用抽象思维、逻辑推理...

    java实习生试题

    java实习生试题,这是某大型IT公司实习生的面试题目,对刚毕业的大学生或者要找java实习的人,非常有参考价值。

    数值分析实习题完整版

    4. 高级编程技能:实习题的实现通常需要编程,如Python、Matlab或C++,掌握至少一种编程语言的语法和数值计算库(如NumPy、SciPy)。 5. 稳定性和误差分析:了解数值方法的稳定性和误差来源,如截断误差和舍入误差,...

    腾讯2010实习java笔试题

    【腾讯2010实习Java笔试题解析】 在求职过程中,技术面试和笔试是检验应聘者专业技能的重要环节。对于Java开发者来说,了解并准备这类试题有助于提升自己的竞争力。腾讯作为国内知名的互联网巨头,其笔试题目往往...

    孙志忠《计算方法与实习》课后习题答案

    \[|e(\frac{x_1}{x_2})|≈|\frac{1}{x_2}e(x_1)-\frac{x_1}{x_2^2}e(x_2)|≤\frac{1}{x_2}\frac{1}{2}×10^{-4}+\frac{x_1}{x_2^2}\frac{1}{2}×10^{-5}=1.3692×10^{-5}\] **题目5:** 证明 \[\varepsilon_r-\var...

    实习题:C语言实习题1

    C语言实习题一:求两个整数之间的关系运算和输出显示

    软件测试实习招生笔试题

    针对“软件测试实习招生笔试题”这一主题,我们主要探讨的是软件测试的基础知识,以及在应聘实习岗位时可能会遇到的笔试题目类型。以下是一些相关的知识点: 1. **软件测试基础**:软件测试是验证和确认软件产品...

    计算方法与实习 课后习题答案

    2. **线性代数应用**:“calcu-3-习题答案.ppt”可能涵盖了矩阵运算、特征值问题、线性方程组的求解等内容。例如,高斯消元法、LU分解、QR分解等是解决线性系统问题的常用方法。理解这些方法对于处理数据科学和机器...

    腾讯2013实习生招聘笔试试题

    腾讯2013实习生招聘笔试试题,2013年4月13日刚刚出炉的,相比2012年简单一些。

    品诺维新硬件实习生试题答案

    在苏州品诺维新公司的硬件开发实习生面试过程中,考生可能会遇到各种挑战性的题目,旨在测试他们的基础知识、分析能力和问题解决技巧。其中,关于三极管的工作状态问题,是这次初试中的一项重点。三极管,作为电子...

    微软2014年技术类实习生在线测试题

    【微软2014年技术类实习生在线测试题】是一场针对潜在技术实习生的选拔考试,旨在评估候选人的编程能力和问题解决技能。这种类型的测试通常包括实时编程挑战,要求考生在限定的时间内完成一系列任务,以此来模拟真实...

    2013UC实习生笔试试题(游戏开发)

    新鲜出炉的2013UC实习生笔试试题(游戏开发),附参考答案,本人提供仅作参考

    数值分析实习题

    在本主题中,我们将深入探讨“数值分析实习题”这一概念,主要针对天津大学计算机学院的相关课程内容。数值分析是计算机科学与工程领域的一个重要分支,它研究如何使用数值方法来解决数学问题,特别是那些不能解析...

    2011百度实习生招聘笔试题-web前端开发

    在2011年百度的暑期实习生招聘中,web前端开发的笔试题主要涉及JavaScript基础知识、HTTP状态码理解和算法设计,以及系统设计实践。这些题目旨在考察应聘者的编程基础、网络知识以及解决问题的能力。 首先,关于...

    17年华为射频岗实习生笔试题10道题.zip

    标题中的“17年华为射频岗实习生笔试题10道题.zip”表明这是一个与华为公司2017年招聘射频岗位实习生相关的考试题目集合。射频技术是无线通信领域的重要组成部分,主要涉及无线电波的产生、传输、接收及处理。在华为...

    约瑟夫环算法 数据结构实习题

    约瑟夫环 算法 数据结构 实习题 在devc++测试通过

    数值方法计算机实习题

    2. **插值与拟合**:实习题可能会要求使用多项式插值或样条插值方法来逼近数据点,如拉格朗日插值、牛顿插值和最小二乘拟合。这部分内容旨在寻找最佳的函数模型来描述给定的数据。 3. **微分方程数值解**:包括欧拉...

    腾讯2012实习生试题(技术运营)

    【腾讯2012实习生试题(技术运营)】是一份针对有意加入腾讯技术运营岗位的实习生的考核资料,反映了当时腾讯对于技术运营实习生的能力要求和期望。这份试题可能包括了多方面的问题,旨在考察候选人的技术理解、问题...

    数值分析(第五版)部分上机实习题报告和源代码

    ### 数值分析(第五版)部分上机实习题报告和源代码 #### 一、插值法 在数值分析中,插值法是一种通过已知数据点构建一个近似函数的技术,该函数能够通过这些数据点。这种方法在工程计算、数据分析等领域有着广泛...

    SAP思爱普公司实习生笔试题

    SAP思爱普公司作为全球领先的业务软件解决方案提供商,其实习生笔试题往往涵盖了广泛的IT领域知识,旨在测试应聘者的编程基础、数据库管理能力、算法理解以及项目管理沟通技巧。以下是根据提供的部分内容解析的相关...

Global site tag (gtag.js) - Google Analytics