第2次实验——算法基本功 与 综合思考

第一题:实现快速排序,并与冒泡排序,归并排序进行比较!代码呈现如下:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class quickSort {
	public static void main(String[] args) {
		File file = new File("src/largeW.txt"); // 为了方便寻找文件,直接将文件放于工程的src文件中,同理后面的输出文件同样如此
		if (file.isFile() && file.exists()) {
			// 为了担心异常出现,这里使用异常捕获句式。
			try {
				InputStreamReader reader = new InputStreamReader(
						new FileInputStream(file));
				BufferedReader bufferedreader = new BufferedReader(reader);
				List<String> list = new ArrayList<String>();
				String isLine = "";
				while ((isLine = bufferedreader.readLine()) != null) {
					list.add(isLine);
				}

				int num[] = new int[list.size()]; 
				
				for (int i = 0; i < list.size(); i++) {
					num[i] = Integer.parseInt(list.get(i).trim());
				}
				bufferedreader.close();
				long timeBegin = System.currentTimeMillis(); //快速开始时记录当时系统时间
				quickSort(num, 0, num.length-1); // 此时进行快速排序
				long timeEnd = System.currentTimeMillis(); // 快速结束后记录系统的时间

				
				for (int i = 0; i < list.size(); i++) {
					System.out.println(num[i]);
				}
				FileWriter filewriter = new FileWriter("src/largeW_bubble.txt"); 
				for (int i = 0; i < num.length; i++) {
					filewriter.write(String.valueOf(num[i]) + "   "); 

				}
				filewriter.flush();
				filewriter.close();
				System.out.println("进行冒泡排序所消耗的时间为:" + (timeEnd - timeBegin)
						/ 1000 + "s"); // 这里特意将时间单位转换为秒s
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

	}

	// 快速排序的实现方法
	 public static void swap(int a[], int i, int j) {
	        
	        if(i == j) return;
	 
	        int tmp = a[i];
	 
	        a[i] = a[j];
	 
	        a[j] = tmp;
	 
	    }
	 
	   
	    public static int partition(int array[], int low, int high) {
	        //当前位置为第一个元素所在位置
	        int first = low;
	        //采用第一个元素为轴
	        int pivot = array[first];
	         
	        for (int i = low + 1; i <= high; i++) {
	 
	            if (array[i] < pivot) {             
	                
	                first++;
	 
	                swap(array, first, i);  
	 
	            }
	 
	        }
	 
	        swap(array, low, first);
	 
	        return first;
	 
	    }
	  
	    public static void quickSort(int array[], int low, int high) {
	 
	        if (low < high) {
	 
	            int pivot = partition(array, low, high);
	 
	            quickSort(array, pivot + 1, high);
	            
	            quickSort(array, low, pivot - 1);
	 
	           
	 
	        }
	 
	    }

}


 

 

第四题:上招聘网站(如 51job、智联招聘)上查看自己感兴趣的职位与要求。作业要求:写下自己感兴趣工作的至少2个岗位名称(如Java程序员、搜索引擎工程师)、工作岗位具体要求、自身目前具备哪些条件、有哪些不足的地方并如何弥补。

           

本身职位的需求:

1.       可能的岗位:android工程师 

 

2.       根据岗位的需求的等级程度,不同的等级公司对应聘职位人的要求不同,有些正在起步或处于创业艰辛阶段,有些已经处于成熟发展期,故期对于职位人的具体要求是截然不同的,这里我根据不同公司的不同职位需求,分成三部分,也就是三种层次阶段:

 

⑴属于起步公司的应聘要求:

例一:

1.了解Java语言
2.
了解Android开发框架,包括:各种UI组件,布局,ActivityIntentSQLite,各    类基础API; 
3.
有过作品设计,作业设计或小项目开发经验
4.
沟通表达和学习能力较好,具有较好的文档编写能力
5.
能承担工作压力; 
6.
英语四级或以上;

 

     例二:

       你需要具备什么? 
1
.为人真诚,性格开朗(需求被多次修改的情况下不对产品经理造成人身伤害); 
2
.计算机、软件工程或相关专业本科学历; 
3
.熟悉JAVA,熟悉Socket/HTTP编程,熟悉安卓客户端编程。 

你在这里将得到什么? 
1
.一个有爱的工作环境和人文氛围; 
2
.作为一名创业团队成员,独当一面开展工作的刺激体验; 
3
.一份得体的薪酬; 
4
.每天免费的健康午餐; 
5.
我们这艘方舟将刻上你的名字。

例三:

             1.3或大4在读学生,每周不少于4天的课余时间
    2.
android/ios开发有所了解,有志于向该方向发展
    3.
初步掌握相应开发工具的使用
    4.
有良好的代码编写习惯,会写注释
    
职责
    1.
在技术负责人带领下完成智能手机、平板终端软件的开发与维护
    2.
负责项目文档的编写;

 

 

2)属于中期发展阶段:

例一:

           1. 完成软件系统代码的实现,编写代码注释和开发文档
    2.
辅助进行系统的功能定义,程序设计
    3.
根据设计文档或需求说明完成代码编写,调试,测试和维护
    4.
分析并解决软件开发过程中的问题
    5.
配合项目经理完成相关任务目标。 
    
岗位要求
    1.
公司接受优秀应届毕业生、实习生
    2.
有扎实的java基础,有使用android sdkjava的经验,熟悉android开发平台及框架原理
    3.
熟悉网络编程、多线程、图形界面编程、熟悉xml/jsonhttptcp/ipsocket等协议
    4.
熟悉android网络通讯,有网络编程经验
    5.
android作品者优先
    6.
具备需求分析和系统设计能力,以及较强的逻辑分析和独立解决问题能力
    7.
责任心强,具备良好的沟通能力和团队合作精神,能自觉完成任务。

 

例二:

           1、负责android智能手机平台应用软件的分析、设计、编码和测试
    2
、负责android多线程处理,网络访问,数据库访问等功能特性的开发
    3
、负责android 本地应用app开发,webapp开发等工作
    4
、团队协作,配合项目经理的管理工作,高效完成app应用的功能开发。

例三:超级课程表

·                                 工作职责:

·                                 1、参与公司Android应用产品的开发和维护工作。

·                                 2、承担并独立完成开发主管分配的开发任务,并对交付质量负责。

·                                 3、配合开发主管,参与android应用架构的设计和规范化工作。

·                                 岗位要求:

·                                 1、熟悉Android开发平台的框架原理,精通Java编程技术,1-2年以上的        Android实际开发经验,有过独立开发android APP的经验。

·                                 2、能够熟练使用Android SDK,熟练掌握Android网络应用软件开发和调试经验,精通安卓分辨率适配的解决方案。

·                                 3、熟悉Android下网络HTTP协议,XMLJSONMessagePack解析等开发经验,具有丰富的UI开发经验。

·                                 4、有良好的代码习惯,要求结构清晰,命名规范,逻辑性强,冗余度低。

·                                 5、具备良好的团队合作精神、文档和沟通能力,较强的责任心,项目紧张时能自主加班,保证产品时间点的正常发布。

 

 

 

⑶属于成熟发展期的公司:

   例一:TCL公司:

1、 根据系统设计和开发规范编写代码; 
2
、负责软件的维护工作和对实施工程师的技术支持; 
3
、编写相应的开发文档; 
4
、一定的java开发及安卓平台的开发与调试; 
5
、良好的学习能力,刻苦钻研精神; 
6
、实习期十个月,优秀实习生可留任转正。 

任职资格: 
1
、工作细心,能够承受压力; 
2
、良好的沟通能力及团队协作意识; 
3
、对软件开发比较热爱,有志向在软件行业发展; 
4
、计算机等相关专业,精通C/C++/java编程语言,掌握Android平台的开发调试方法。

 

  例二:UC浏览器

1.负责Android平台游戏客户端研发工作; 
2.负责平台兼容性、性能和资源优化的技术解决; 
3.负责系统、子系统和模块级的架构设计、概要设计工作; 
4.承担并推动团队内成员技术经验分享。

任职要求: 
1.计算机等相关专业本科及以上学历,两年以上Android工作经验; 
2.精通架构设计、概要设计和详细设计,熟练使用UML设计工具; 
3.有技术难题攻关经验,善于主动推动项目进展并达成项目目标; 
4.熟悉JavaC++语言,深入掌握Android下的NDK开发。

:谢绝虚假简历,公司有严格的流程将对求职者做详尽的背景调查。

 

 

 

3.      关于本人具备的条件:

      基本符合了作为一个初级起步公司应聘要求,基本了解并理解了Java程序语言,而且经过一个学期对于android的学习,也基本掌握并熟悉应用了android的四大组件(ActivitybroadcastReceiverservicecontentProvider),算是基本符合了最初需求。

 

4.      本人所存在的不足:

     先从严重的不足开始说吧:确实,一直对android相当感兴趣,尤其是对于android智能机的研究确实也很早就开始动手了,很多手机内置文件基本都掌握了其要领及作用。但是,真正从事android的开发工作是从这学期头开始的,所以都是从基础知识一步步走过来的,对于基础知识的掌握程度上还是足够的,但对于刚入门的人来说就有个严重的不足的地方就是,掌握的知识点不系统,没能达到很好的串连,而且确实在android开发的深度上也存在着一定的缺陷,但我一直觉得这只是时间问题,只要时间足够,并付诸更大的努力,一定为对于android的开发有着更深的理解和形成自己一套独特的方法的。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值