各种常见的排序 java版本（冒泡，选择，插入，希尔，快速） 原

wangjinzhao

1.冒泡排序

/**

* Created by jinzhao.w on 2015/4/7.

*/

public class BubbleSort {

public static int [] sort(int [] array){

int temp=0;

for(int i=array.length-1;i>0;--i){

for(int j=0;j<i;j++ ){

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

temp=array[j];

array[j]=array[j+1];

array[j+1]=temp;

}

}

}

return array;

}

public static void main(String [] args){

int[] test={1,3,2,5,4};

BubbleSort.sort(test);

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

System.out.print(test[i]);

}

}

}

-------------------------------------------------------------------------

2.选择排序

/**

* Created by 737597978 on 2015/4/8.

*/

public class SelectSort {

public static int[] sort(int[] array) {

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

int min = i;

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

if (array[j] < array[min]) {

min = j;

}

}

swap(i, min, array);

}

return array;

}

private static void swap(int i, int min, int[] array) {

int temp = array[i];

array[i] = array[min];

array[min] = temp;

}

public static void main(String[] args) {

int[] test = {7, 1, 4, 5, 9, 8};

SelectSort.sort(test);

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

System.out.print(test[i]);

}

}

}

-----------------------------------------------------------------------------------------

3.插入排序

/**

* Created by 737597978 on 2015/4/8.

*/

public class InsertSort {

public static int [] sort(int array[]){

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

int temp=array[i];

int inner=i;

while (inner>0&&array[inner-1]>=temp){

array[inner]=array[inner-1];

--inner;

}

array[inner]=temp;

}

return array;

}

public static void main(String [] args){

int[] test={3,2,4,5,7,1};

InsertSort.sort(test);

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

System.out.print(test[i]);

}

}

}

----------------------------------------------------------------------------------------------------

4.希尔排序

/**

* Created by 737597978 on 2015/4/8.

*/

public class ShellSort {

public static void sort(int[] array) {

int inner, outer;

int temp;

int h = 1;

while (h <= array.length / 3) {

h = 3 * h + 1;

}

while (h > 0) {

for (outer = h; outer < array.length; outer++) {

temp = array[outer];

inner = outer;

while (inner > h - 1 && array[inner - h] >= temp) {

array[inner] = array[inner - h];

inner -= h;

}

array[inner] = temp;

}

h = (h - 1) / 3;

}

}

public static void main(String[] args) {

int[] test = {2, 3, 4, 1, 5};

ShellSort.sort(test);

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

System.out.print(test[i]);

}

}

}

----------------------------------------------------------------------------------------------

5.快速排序

/**

* Created by 737597978 on 2015/4/9.

*/

public class QuickSort {

private static int[] chaosAarray = {2, 3, 7, 1, 5};

public static void sort(int left, int right) {

if (right <= left) {

return;

} else {

int pivot = chaosAarray[right];

int partition = partitionIt(left, right, pivot);

sort(left, partition - 1);

sort(partition + 1, right);

}

}

public static int partitionIt(int left, int right, int pivot) {

int leftPtr = left - 1;

int rightPtr = right;

while (true) {

while (chaosAarray[++leftPtr] < pivot) ;

while (rightPtr > 0 && chaosAarray[--rightPtr] > pivot) ;

if (leftPtr >= rightPtr) {

break;

} else {

swap(leftPtr, rightPtr);

}

}

//调整枢纽值在数组中的位置  将枢钮值跟数组最右边的值对换

swap(leftPtr, right);

return leftPtr;

}

public static void swap(int leftPtr, int rightPtr) {

int temp = chaosAarray[rightPtr];

chaosAarray[rightPtr] = chaosAarray[leftPtr];

chaosAarray[leftPtr] = temp;

}

public static void main(String[] args) {

QuickSort.sort(0, chaosAarray.length - 1);

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

System.out.print(chaosAarray[i]);

}

}

}

wangjinzhao

java排序之快速排序、归并排序、基数排序

2018/06/05
46
0

nanchen2251
2018/07/25
0
0

2014/06/07
111
0

02/12
0
0
JAVA中运用数组的四种排序方法

JAVA中在运用数组进行排序功能时，一般有四种方法：快速排序法、冒泡法、选择排序法、插入排序法。 快速排序法主要是运用了Arrays中的一个方法Arrays.sort（）实现。 冒泡法是运用遍历数组进...

IceRainYWC
2014/03/17
26
0

10
0
Java 中的 String 有没有长度限制

23
0
OpenStack 简介和几种安装方式总结

OpenStack ：是一个由NASA和Rackspace合作研发并发起的，以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

11
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念，那么接下来需要了解的就是值对象、唯一标识。值对象，值就是数字1、2、3，字符串“1”，“2”，“3”，值时对象的特征，对象是一个事物的具体描述...

MrYuZixian

9
0

1.乱码问题 iTerm2终端使用Zsh，并且配置Zsh主题，该主题主题需要安装字体来支持箭头效果，在iTerm2中设置这个字体，但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper

9
0