各种常见的排序 java版本(冒泡,选择,插入,希尔,快速)
2015-05-24 00:00
615 查看
摘要: 常见的排序算法
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]);
}
}
}
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]);
}
}
}
相关文章推荐
- java实现常见排序(选择,冒泡,插入,快速,希尔,堆)
- 数据结构(C#)--冒泡、插入、快速、堆、归并、希尔、选择各种排序排序过程比较以及各种排序的所用时间的对比
- 排序算法Java描述:选择、冒泡、插入、希尔、归并、快速及三向切分快速排序
- 数据结构各种排序法及核心思想(冒泡、鸡尾酒、选择、插入、二分法、希尔、堆、归并、快速)
- 常见的排序算法(Java实现):冒泡、插入、选择、快速排序
- java实现七大排序(插入,冒泡,选择,快速,堆,希尔,归并)
- 六大经典排序算法(Java版):冒泡、选择、插入、希尔、快速、归并
- 排序算法复习(Java实现): 插入,冒泡,选择,Shell,快速排序
- 1. C#数据结构与算法 -- 排序(插入,冒泡,希尔,快速,选择)
- C语言实现 排序源程序(包括直接插入、希尔、冒泡、快速、简单选择、堆排序)
- 数据结构 27 排序 排序-选择 插入 冒泡 希尔 快速归并 6种排序
- 插入,冒泡,选择,快速排序,二分查找(Java版)
- C语言之各种排序法及核心思想(冒泡、鸡尾酒、选择、插入、二分法、希尔、堆、归并、快速)
- java里的4种排序算法测试——冒泡、选择、插入、快速排序
- 冒泡,选择,插入,快速排序在Java中的实现
- 冒泡,插入,折半插入,希尔,快速,简单选择排序的源代码总结
- 【转】Java数组排序总结(冒泡,选择,插入,希尔)
- 数据结构排序算法总结包括选择、插入、希尔、快速、冒泡等排序方法
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- Java数组排序总结(冒泡,选择,插入,希尔)