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

Java 排序 快速排序 冒泡排序 选择排序 插入排序

2017-08-10 09:31 417 查看
在平常写代码的过程中我们经常会遇到排序的情况,下面我就写了几种常见的排序算法,虽然在真正的项目开发中。很少会用到自己写的排序算法。但是只有懂得了排序算法具体是怎么实现的,这样用起来就会更加的得心应手。我只写了几种算法。下面贴上自己写的代码。代码里面有算法的思路,希望能够有点用。

package sort;
/**
* @author  曾炜龙  E-mail: 1501122784@qq.com
* @date 创建时间:2017年8月9日 上午10:22:11
* @version 1.0
* @parameter  排序算法
* @since
* @return
*/
public class SortDemo {
/**
* 冒泡排序
* 比较相邻的元素,如果第一个比第二个大,就交换他们两个
* 对么一堆相邻元素做同样的工作,从开始第一对到结尾最后一对。在这一点,最后的元素应该会是最大的数
* 针对所有的元素重复以上的步骤,除了最后一个,
* 持续每次对越来越少的元素重复上面的步骤,知道没有任何一对数字需要比较
* @param numbers 整型数组
*/
public static void bubbleSort(int[] numbers){
int size = numbers.length;
int temp = 0;

for(int i = 0;i<size-1;i++){
for(int j = 0;j<size-1-i;j++){
if(numbers[j]>numbers[j+1]){

4000
temp = numbers[j];
numbers[j]  = numbers[j+1];
numbers[j+1] = temp;

}

}

}

}

/**
* 快速排序
* 快速排序利用分治法,先取中值,然后利用中值对两边分别进行排序,然后递归调用函数。最后将数组组合在一起,就是排好序的
*
*/
public static void quickSort(int[] numbers,int low,int hign){
if(low<hign){
int middle  = getMiddle(numbers,low,hign);
quickSort(numbers,low,middle-1);         //对低的一方进行递归排序
quickSort(numbers,middle+1,hign);      //对高的一方进行递归排序
}
}
public static int getMiddle(int[] numbers,int low,int hign){
int temp  = numbers[low];  //数组的第一个元素为中值
while(low<hign){
while(low<hign && numbers[hign]>temp){
hign--;
}
numbers[low] = numbers[hign];
while(low<hign && numbers[low]<temp){
low++;
}
numbers[hign]  = numbers[low];
}
numbers[low] = temp;
return low;
}

/**
* 快速排序方法调用
*
*/
public static  void quick(int[] numbers){
if(numbers.length>0){
quickSort(numbers,0,numbers.length-1);
}

}

/**
* 选择排序
* 在未排序序列中找到最小元素,存放到排序序列的起始位置
* 再从剩余的元素中找到最小元素存放到 排序序列起始位置
* 以此类推,直到最后一个数排序完成
*/
public static void selectSort(int[] numbers){
int size  = numbers.length;
int temp = 0;  //中间变量

for(int i=0;i<size;i++){
int k = i;
for(int j=size-1;j>i;j--){
if(numbers[j]<numbers[k]){
k= j;
}
}
temp = numbers[i];
numbers[i] = numbers[k];
numbers[k] = temp;
}

}

/**
* 插入排序
* 取出第一个值,在排序序列元素中从后向前扫描
* 如果该元素大于新元素,则将该元素移到下一位置
* 重复步骤,直到找到已排序的元素小于或等于新元素的位置
*/
public static void insertSort(int[] numbers){
int size = numbers.length;      //数组长度
int temp = 0;                   //中间量

int j = 0;
for(int i=0;i<size;i++){
temp = numbers[i];
for(j=i;j>0&&temp<numbers[j-1];j-- ){
numbers[j] = numbers[j-1];

}
numbers[j] = temp;
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐