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

往往面试中都会让我们用一种排序方法做一道排序题,下面我就罗列出快速排序、冒泡排序、插入排序、选择排序的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. 判断是否联网_检测网络的类型为3G、2G、wap、wifi

    判断是否联网_检测网络的类型为3G.2G.wap.wifi  判断是否联网: /*** * judge Internet is available * * @author wei-spring * @ ...

  2. 让Safari使用Chrome的代理

    Pac文件可以从switchSharp中导出 Configuring Safari manually Getting Started Guide | Cloud Web Protection Solu ...

  3. Ghost win7 系统安装(虚拟机)

    1.将Ghost.iso添加到数据存储iso文件中,启动虚拟机,根据相关提示,文件格式化系统硬盘,完成操作后关机: 2.进入BIOS,设置从CDROM启动系统(否则系统会提示找到引导文件): 3.将系 ...

  4. J2SE知识点摘记(二)

    1.    对象的声明 "类名 对象名 = new 类名();"例子:Person P;//先声明一个Person类的对象p p=new Person();//用new关键字实例化 ...

  5. android模块

    网络模块 1.URL --------openStream() return InputStream --------openConnection() return URLConnection 2.U ...

  6. 非GUI-Qt程序运行后显示Console(简单好用)

    ----我的生活,我的点点滴滴!! 有很多时候,我们在程序中添加了好Debug信息,方便程序在运行期间打印出一些我们需要的信息或者,想用他来显示一些必要信息时, 那么console就太重要了,曾几何时 ...

  7. Delphi RichEdit的内容保存为图片

    uses RichEdit; {将RichEdit1的内容保存为图片,此函数也适合于RxRichEdit,即RichEdit: TRxRichEdit}procedure RichEditToCanv ...

  8. delphi 打开文件夹并定位到一个文件(使用ShellExecute时加一个select参数,原来这么简单!)

    strFileName := FcxLV[nIndex].Items.Item[FcxLV[nIndex].ItemIndex].SubItems.Strings[0]; //路径  ShellExe ...

  9. C++多字节字符转换为宽字符的两种方法

    目前知道有两种方式:可以提供宽字符与ANSI字符之间的转换, 第一种由COM库提供的函数 char*  _com_util::ConvertBSTRToString(BSTR ); BSTR _com ...

  10. Hibernate 1、Hello Hibernate

    所使用到的jar 包: 1.创建实体类 public class User { private Integer id; private String name; private String addr ...