今天座右铭----每天的学习会让我们不断地进步!

往往面试中都会让我们用一种排序方法做一道排序题,下面我就罗列出快速排序、冒泡排序、插入排序、选择排序的java代码!

1、快速排序

public class Quick_sort {

/**   * @param args   */

public static void main(String[] args) {

// TODO Auto-generated method stub

int arr1[]={1,0,-1,9,-100,90};

QuickSort quciksort=new QuickSort();

quciksort.sort(0,arr1.length-1,arr1);

//输出最后结果

for(int i=0;i<arr1.length;i++){

System.out.print(arr1[i]+" ");

}

}

}

class QuickSort{

public void sort(int left,int right,int array[]){

int l=left;

int r=right;

int pivot=array[(left+right)/2];

int temp=0;

while(l<r){

while(array[l]<pivot) l++;

while(array[r]>pivot) r--;

if(l>=r) break;

temp=array[l];

array[l]=array[r];

array[r]=temp;

if(array[l]==pivot) --r;

if(array[r]==pivot) ++l;

}

if(l==r){

l++;

r--;   }

if(left<r) sort(left,r,array);

if(right>l) sort(l,right,array);

}

}

2、冒泡排序

public class Bubble_sort {

/**   * @param args   */

public static void main(String[] args) {

// TODO Auto-generated method stub

int arr1[]={1,0,-1,9,-100,90};

//创建一个Bubble类

Bubble bubble=new Bubble();

bubble.sort(arr1);

//输出最后结果

for(int i=0;i<arr1.length;i++){

System.out.print(arr1[i]+" ");

}

}

}

class Bubble{

public void sort(int arr[]){

int temp=0;

//排序

//外部排序,决定一共走几趟

for(int i=0;i<arr.length-1;i++){

//内层循环,开始逐个比较,如前一个比后一个大,则交换

for(int j=0;j<arr.length-1-i;j++){

if(arr[j]>arr[j+1]){

//换位

temp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}

}

}

}

}

3、插入排序

public class Insert_sort {

/**   * @param args   */

public static void main(String[] args) {

// TODO Auto-generated method stub

int arr1[]={1,0,-1,9,-100,90};

Insert insert=new Insert();

insert.sort(arr1);

// System.out.println("排序后:"+cal.getTime());

//输出最后结果

for(int i=0;i<arr1.length;i++){

System.out.print(arr1[i]+" ");

}

}

}

class Insert{

//插入排序

public void sort(int arr[]){

for(int i=1;i<arr.length;i++){

int insertVal=arr[i];

//insertVal准备和前一个数比较

int index=i-1;

while(index>=0&&insertVal<arr[index]){

//将把arr[index]向后移动

arr[index+1]=arr[index];

//让index向前移动

index--;

}

//将insertVal插入到适当位置

arr[index+1]=insertVal;

}

}

}

4、选择排序

public class Select_sort {

/**   * @param args   */

public static void main(String[] args) {

// TODO Auto-generated method stub

int arr1[]={1,0,-1,9,-100,90};

//创建一个Select类

Select select=new Select();

//在排序前打印系统时间

//Calendar cal=Calendar.getInstance();

//System.out.println("排序前:"+cal.getTime());

select.sort(arr1);

// System.out.println("排序后:"+cal.getTime());

//输出最后结果

for(int i=0;i<arr1.length;i++){

System.out.print(arr1[i]+" ");

}

}

}

class Select{

//选择排序

public void sort(int arr[]){

int temp=0;

for(int j=0;j<arr.length;j++){

//我默认第一个数就是最小

int min=arr[j];

//记录最小数的下标

int minIndex=j;

for(int k=j+1;k<arr.length;k++){

if(min>arr[k]){

//修改最小

min=arr[k];

minIndex=k;

}

}

//当退出for就找到最小值

temp=arr[j];

arr[j]=arr[minIndex];

arr[minIndex]=temp;

}

}

}

附:二分查找

public class BinaryFind {

/**   * @param args   */

public static void main(String[] args) {

// TODO Auto-generated method stub

int arr[]={2,5,0,7,40,50};

//创建一个对象

Binary binary=new Binary();

binary.find(0,arr.length-1,7,arr);

//7是要找的数

}

}

class Binary{

public void find(int leftIndex,int rightIndex,int val,int arr[]){

//首先找到中间的数

int midIndex=(rightIndex+leftIndex)/2;

int midVal=arr[midIndex];

if(rightIndex>=leftIndex){

//如果要找的数比minVal大

if(midVal>val){

//在arr左边数找

find(leftIndex,midIndex-1,val,arr);

}else if(midVal<val){

//在右边找

find(midIndex+1,rightIndex,val,arr);

}else if(midVal==val){

System.out.println("找到下标"+midIndex);

}

}

}

}

总之排序在学习语言过程中是很重要的知识点

排序-java的更多相关文章

  1. 希尔排序及希尔排序java代码

    原文链接:http://www.orlion.ga/193/ 由上图可看到希尔排序先约定一个间隔(图中是4),然后对0.4.8这个三个位置的数据进行插入排序,然后向右移一位对位置1.5.9进行插入排序 ...

  2. 算法练习5---快速排序Java版

    基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成 ...

  3. ElasticSearch中设置排序Java

    有用的链接:http://stackoverflow.com/questions/12215380/sorting-on-several-fields-in-elasticsearch 有的时候,需要 ...

  4. 初识指令重排序,Java 中的锁

    本文是作者原创,版权归作者所有.若要转载,请注明出处.本文只贴我觉得比较重要的源码 指令重排序 Java语言规范JVM线程内部维持顺序化语义,即只要程序的最终结果与它顺序化情况的结果相等,那么指令的执 ...

  5. 希尔排序(java)

    时间复杂度为O( n^(3/2) )不是一个稳定的排序算法 如何看一个算法是否稳定:{("scala",12),("python",34),("c++ ...

  6. 基本排序算法——shell排序java实现

    shell排序是对插入排序的一种改进. package basic.sort; import java.util.Arrays; import java.util.Random; public cla ...

  7. 基本排序算法——选择排序java实现

    选择排序与冒泡排序有很大的相同点,都是一次遍历结束后能确定一个元素的最终位置,其主要思路是,一次遍历选取最小的元素与第一个元素交换,从而使得一个个元素有序,而后选择第二小的元素与第二个元素交换,知道, ...

  8. 选择排序-java

    排序-选择排序 基本思想:在待排序子表中找出最大(小)元素, 并将该元素放在子表的最前(后)面. 平均时间:O(n2) 最好情况:O(n2) 最坏情况:O(n2) 辅助空间:O(1) 稳定性:不稳定 ...

  9. 希尔排序java

    希尔排序简述 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率.(希尔排序先将部分数据进行排序,相当于已经部分排好序) ...

随机推荐

  1. 【原】YUI3:js加载过程及时序问题

    时序问题在javascript中比较常见,尤其是在网络环境不稳定时以及某些浏览器本来版本中比较多,遇到此类问题,往往会使开发者非常头痛,问题的重现需要特定的环境,是偶发的,不容易重现.对于有经验的开发 ...

  2. 用python发送GET和POST请求

    GET请求: python2.7: import urllib,urllib2 url='http://192.168.199.1:8000/mainsugar/loginGET/' textmod ...

  3. In Depth : Android Shutdown Sequence

    What happened when I long press power button ?What is shutdown sequence ?How is it different from de ...

  4. Git 操作常用命令

    Git使用 1. git pull    更新服务器代码到本地a). git pull origin master是将origin这个版本库的代码更新到本地的master主分支 2. git push ...

  5. keil MDK编译器警告和错误详解(不定期更新)

    工作后从单片机转成ARM,刚开始用ADS1.2编译器,用了一段时间,因为我接手的项目的老程序正是用ADS编译的,部门也大都在用.在学单片机的时候用的是keil c51编译器,ads和这个编译器在易用性 ...

  6. web编码(转)

    问题2.浏览器编码方式是根据“响应标头-response header”中的键为“Content-Type”的值来自动选择判断,而不会简单的根据你在html中看到的标签值<meta http-e ...

  7. ubuntu14.04 qt4开发环境搭建(vnc use gnome)

    1,安装qt开发环境软件包:apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer qtcreator; 2 ...

  8. 网易云课堂_程序设计入门-C语言_第一周:简单的计算程序_1逆序的三位数

    1 逆序的三位数(5分) 题目内容: 程序每次读入一个正三位数,然后输出逆序的数字.注意,当输入的数字含有结尾的0时,输出不应带有前导的0.比如输入700,输出应该是7. 输入格式: 每个测试是一个3 ...

  9. SQL Server 获取服务器信息

    最近做了一个小工具,里面涉及到一些取SQL Server 服务器信息的一些东西,找了好久,找到一个不错的,贴出来分享. 系统函数 SERVERPROPERTY ( propertyname ) 包含要 ...

  10. Qemu之Network Device全虚拟方案二:虚拟网卡的创建

    上文针对Qemu在前端网络流路径的建立方面做了具体的描写叙述.数据包从Host的物理网卡经过Host Linux内核中的Bridge, 经过Tap设备到达了Qemu的用户态空间.而Qemu是怎样把数据 ...