java程序员面试笔试宝典8.3排序
1如何进行选择排序
1)对于给定的一组纪录,经过第一轮比较得到最小的纪录将该纪录与第一个纪录的位置进行交换。
2)接着对不包括第一个纪录以外的其他纪录进行第二轮比较,得到最小的纪录并与第二个纪录进行位置交换。
3)重复该过程,直到进行比较的纪录只有一个时为止。
以数组{38,65,97,76,13,27,49}为例
public class TestSort {public static void selectSort(int[] a){int i;int j;int temp = 0;int flag = 0;int n = a.length;for (i = 0; i < n; i++) {temp = a[i];flag = i;for (j = i+1; j< n; j++) {if(a[j]<temp){temp = a[j];flag = j;}}if(flag != i){a[flag] = a[i];a[i] = temp;}}}public static void main(String[] args) {int i = 0;int a[] = {38,65,97,76,13,27,49};//int a[] = {5,4,9,8,7,6,0,1,2,3};selectSort(a);for (i = 0; i < a.length; i++) {System.out.print(a[i]+" ");}System.out.println("\n");}
}结果:
13 27 38 49 65 76 97
2.如何进行插入排序:
对于给定的一组纪录,初始时假设第一个纪录自成一个有序序列,其余纪录为无序序列。
接着从第二个纪录开始,按照纪录的大小依次将当前处理的纪录插入到其之前的有序序列中,直至最后一个纪录插入到有序序列中为止。
以数组{38,65,97,76,13,27,49}为例
public class TestSort {//插入排序public static void insertSort(int[] a){if(a!=null){for (int i = 1; i < a.length; i++) {int temp = a[i],j=i;if(a[j-1]>temp){while(j>=1&&a[j-1]>temp){a[j] = a[j-1];j--;}}a[j] = temp;}}}public static void main(String[] args) {int[] array = {38,65,97,76,13,27,49};insertSort(array);for (int i = 0; i < array.length; i++) {System.out.print(array[i]+" ");}}
}结果:
13 27 38 49 65 76 97
3.如何进行冒泡排序?
对于给定的n个纪录,从第一个纪录开始依次比较相邻两个纪录进行比较,当前面的纪录大于后面的纪录时,交换位置
进行一轮比较和换位后,n个纪录中的最大记录将位于第n位
然后对前(n-1)个记录进行第二轮比较
重复该过程直到进行比较的记录只剩下一个为止。
public class MaxMin {public static void BubbleSort(int[] array){int i;int j;int len = array.length;int tmp;for (i = 0; i < len; i++) {/*for (j = len-1; j >i; --j) {if(array[j]<array[j-1]){tmp = array[j];array[j] = array[j-1];array[j-1] = tmp;}}*/for (j=1;j<len-i;j++) {if(array[j-1]>array[j]){tmp = array[j-1];array[j-1] = array[j];array[j] = tmp;}}}}public static void main(String[] args) {int[] a = {5,4,9,8,7,6,0,1,3,2};BubbleSort(a);for (int i = 0; i < a.length; i++) {System.out.print(a[i]+" ");}}
}结果:
0 1 2 3 4 5 6 7 8 9
4.如何进行归并排序?
5.如何进行快速排序?
采用分而治之的思想,把大的拆分为小的,小的拆分为更小的。
对于一组给定的记录,通过一趟排序后,将原序列分为两个部分,其中前一部分的所有记录均比后一部分的所有记录小
然后再依次对前后两部分的记录进行快速排序,直到序列中所有记录均有序为止。
public class Test {public static void sort(int array[],int low,int high){int i,j;int index;//作为keyif(low>=high){return;}i = low;j = high;index = array[i];while(i<j){while(i<j && array[j]>=index){j--;}if(i<j){array[i++]=array[j];}while(i<j && array[i]<index){i++;}if(i<j){array[j--] = array[i];}}array[i] = index;sort(array, low, i-1);sort(array, i+1, high);}public static void quickSort(int array[]){sort(array, 0, array.length-1);}public static void main(String[] args) {int i = 0;int a[] = {5,4,9,8,7,6,0,1,3,2};int len = a.length;quickSort(a);for (i = 0; i < len; i++) {System.out.print(a[i]+" ");}}
}结果:
0 1 2 3 4 5 6 7 8 9
java程序员面试笔试宝典8.3排序相关推荐
- Java程序员面试笔试宝典-Java基础知识(一)
本文内容基于<Java程序员面试笔试宝典>,何昊.薛鹏.叶向阳著. 1. 基本概念 1.1 Java语言有哪些优点? 1.2 Java与C++有什么异同? 1.3 为什么需要public ...
- 程序员面试必备——《Java程序员面试笔试宝典》pdf
<Java程序员面试笔试宝典>pdf 链接: https://pan.baidu.com/s/1uqxvY55jFOEAAzcn-pNVSQ 提取码: fety 1 内容简介 · · · ...
- Java程序员面试笔试宝典刷题总结~11
虽然申请博客已经有一段时间了,却是第一次写博客,有点激动,不知道该写些什么,刚好大三老学姐正值找实习工作之际,每天都会刷一点题,现在在看Java程序员面试笔试宝典一书,刚好把里面的题每天总结5道,写在 ...
- Java程序员面试笔试宝典-Java Web(二)
本文内容基于<Java程序员面试笔试宝典>,何昊.薛鹏.叶向阳著. 1. Servlet与JSP 1.1 页面请求的工作流程是怎样的? 1.2 HTTP中GET与POST方法有什么区别? ...
- Java程序员面试笔试宝典-数据结构与算法(四)
本文内容基于<Java程序员面试笔试宝典>,何昊.薛鹏.叶向阳著. 1. 链表 1.1 如何实现单链表的增删操作? 1.2 如何从链表中删除重复元素? 1.3 如何找出单链表中的倒数第k个 ...
- Java程序员面试笔试宝典
1. 基本概念 1.1 Java语言有哪些优点? Java为纯面向对象的语言: 平台无关性: Java提供了很多内置的类库: 提供了对Web应用开发的支持: 具有较好的安全性(数组边界检测和Bytec ...
- 读书笔记-Java程序员面试笔试宝典--持续更新中
文章目录 第四章 Java基础知识 4.1 基础概念 4.2 面向对象技术 4.3 关键字 4.4 基本类型与运算 4.5 字符串与数组 4.6 异常处理 4.7 输入输出流 4.8 Java平台与内 ...
- Java接口有时有结果 有时没有_《Java程序员面试笔试宝典》之为什么Java中有些接口没有任何方法...
由于Java不支持多重继承,即一个类只能有一个父类,为了克服单继承的缺点,Java语言引入了接口这一概念.接口是抽象方法定义的集合(接口中也可以定义一些常量值),是一种特殊的抽象类.接口中只包含方法的 ...
- Java程序员面试笔试宝典答案,基于HTML
<p> 截至2012年,石埇镇有耕地面积12021亩,人均0.61亩:林地面积共计26344亩. </p><p><b> 矿藏资源</b>&l ...
最新文章
- 【C++自我精讲】基础系列二 const
- 从小开始学编程的小姐姐自述:我变成更好程序员的三点心得体会
- PHP安装memcache扩展
- 美好生活从java开始
- crontab 半小时_?用猫粮诱惑,7名消防员花半小时救出困在夹墙间的喵星人
- 关于库存 库存BAPI
- 【我所认知的BIOS】—gt; uEFI AHCI Driver(5) — 第一个protocol最终要開始安装了
- 游戏打包过程枯燥且繁琐,如何提升打包效率?
- 许可证( License LicenseLicenseLicenseLicenseLicense)服务器配置
- GIS开源库shapeLib的使用方法
- linux用于电脑,适用于 Linux的Windows子系统正在获得这些有用的新功能的介绍
- 前端----HTML
- 任一矩阵都可表为一对称矩阵和反称矩阵之和
- VS2010下安装Opencv
- 简单快捷 Lambda数组打印
- 【板栗糖GIS】twinmotion—twinmotion如何联动sketchup
- 用游戏外挂的方式修复有道云笔记的BUG
- 古今安全帽头盔大PK,古人安全意识不比今人差
- 微信聊天记录导出为电脑txt文件教程
- 获取指定文件夹下所有的同种类型文档的名字(Python)