您的位置:首页 > 编程语言 > Java开发

java排序算法

2016-06-27 10:21 507 查看
一、冒泡排序

  以一个整数数组为例从小到大排序,从第一个元素开始循环,不断的和下一个元素比较,如果较小,不做交换,若较大,就交换位置。这样循环到最后,最大的元素就在最后面,此时继续从第一个元素开始循环,从左到右,两两比较,这一次只需要比较到倒数第二个位置,因为最大的数值已经占据了最后位置,以此类推,最终完成排序。

package com.henrysunjavawebstudy.datastructure_algorithms;

/*
* 排序算法
* 冒泡排序
*/

public class PaiXu {

/**
* @param args
*/
public static void main(String[] args) {
ArrayBub ab=new ArrayBub(4);
ab.inert(7);
ab.inert(4);
ab.inert(1);
ab.inert(8);
ab.bubbSort();
ab.display();
}

}

class ArrayBub
{
private  int[] a;
private  int nElemt;

public ArrayBub(int max)
{
a=new int[max];
nElemt=0;
}

public  void inert(int value) {
a[nElemt]=value;
nElemt++;
}

public  void display() {
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}

//排序代码
public  void  bubbSort() {
int temp;
for (int i = 0; i < a.length; i++) {
for (int j =0; j < a.length-i-1; j++) {
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}

}

二、选择排序

 以整数数组为例从小到大排序,从第一个元素开始从左往右循环,找到一个最小的元素就把它放在最左边,由于到倒数二个元素时候如果最后一个元素较小就会移到左边,倒数第二个元素会自动变为最后一个元素,所以第一个循环要在数组长度-1索引处结束,按照这个原理,个人实现代码如下:

//选择排序
public void chooseSort()
{
int temp,i,j,mark=0;
for (i = 0; i < a.length-1; i++) {
//最左边的元素
temp=a[i];
for(j=i;j<a.length;j++)
{
//开始比较,较小的值就赋给临时变量,并把索引做个标记
if(temp>a[j])
{
temp=a[j];
mark=j;
}
}
if(a[mark]<a[i])
{
temp=a[mark];
a[mark]=a[i];
a[i]=temp;
}
}
}

三、插入排序

 假设一组人要从矮到高排列,可以先从左到右找到一个部分有序队列,java培训也就是找到一个人,这个人之前的队列刚好是从矮到高排列的,那么从这个人开始,不断的和之前的人比较,较矮的话就交换位置,一直比较到比前面一个人高为止,最后完成排序,图示和实现如下:





///插入排序
public void insertSort()
{
int temp,mark=0;
//先找到一个之前的队列刚好是从小到大排列的数值,并把位置标记
for (int i = 0; i < a.length-1; i++) {
if(a[i]>a[i+1])
{
mark=i+1;
}
break;
}
//从标记位置开始循环,不断的和前面的数据两两比较,较小就交换位置,较大不变
for(int i=mark;i<a.length;i++)
{
for(int j=i;j>0;j--)
{
if(a[j]<a[j-1])
{
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: