java

位置:IT落伍者 >> java >> 浏览文章

常见排序算法的java实现


发布日期:2024年08月10日
 
常见排序算法的java实现

最近在面试遇到很多排序算法问题总结一下

定义数组如下

[java]

int[] array = new int[]{ };

int[] array = new int[]{ };

首先是插入排序

[java]

/**

* insert sort

* @param a

*/

private static void insertSort(int[] a){

Systemoutprintln(插入排序过程);

for (int i = ; i < alength; i++) {

int temp = a[i];

int j = i ;

while (j >= && a[j] > temp) {

a[j + ] = a[j];

j;

}

a[j + ] = temp;

Systemoutprint( + i + );

printArray(a);

}

Systemoutprintln(插入排序结果:);

printArray(a);

}

/**

* insert sort

* @param a

*/

private static void insertSort(int[] a){

Systemoutprintln(插入排序过程);

for (int i = ; i < alength; i++) {

int temp = a[i];

int j = i ;

while (j >= && a[j] > temp) {

a[j + ] = a[j];

j;

}

a[j + ] = temp;

Systemoutprint( + i + );

printArray(a);

}

Systemoutprintln(插入排序结果:);

printArray(a);

}

运行结果

插入排序过程

插入排序结果:

希尔排序实现

[java]

private static void shellInsertSort(int[] a int start int dk){

int i j;

for (i = start + dk; i < alength; i +=dk) {

j = i dk;

int temp = a[i];

while(j >= && a[j] > temp){

a[j + dk] = a[j];

j = dk;

}

a[j + dk] = temp;

}

Systemoutprintln(排序结果);

printArray(a);

}

private static void shellInsertSort(int[] a int start int dk){

int i j;

for (i = start + dk; i < alength; i +=dk) {

j = i dk;

int temp = a[i];

while(j >= && a[j] > temp){

a[j + dk] = a[j];

j = dk;

}

a[j + dk] = temp;

}

Systemoutprintln(排序结果);

printArray(a);

}

冒泡排序实现

[java]

/**

* bubble sort

* @param a

*/

private static void bubbleSort(int[] a){

Systemoutprintln(冒泡排序过程);

for (int i = ; i < alength; i++) {

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

if(a[j] > a[j + ]){

int temp = a[j];

a[j] = a[j + ];

a[j + ] = temp;

}

}

Systemoutprint( + (i+) + );

printArray(a);

}

Systemoutprintln(冒泡排序结果);

printArray(a);

}

/**

* bubble sort

* @param a

*/

private static void bubbleSort(int[] a){

Systemoutprintln(冒泡排序过程);

for (int i = ; i < alength; i++) {

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

if(a[j] > a[j + ]){

int temp = a[j];

a[j] = a[j + ];

a[j + ] = temp;

}

}

Systemoutprint( + (i+) + );

printArray(a);

}

Systemoutprintln(冒泡排序结果);

printArray(a);

}

运行结果

冒泡排序过程

冒泡排序结果

改进的冒泡排序算法

[java] view plaincopyprint?private static void bubbleSortBetter(int[] a){

Systemoutprintln(改进的冒泡排序过程);

boolean bool;

int i = ;

do{

bool = false;

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

if(a[j] > a[j + ]){

int temp = a[j];

a[j] = a[j + ];

a[j + ] = temp;

bool = true;

}

}

i ++;

Systemoutprint( + i + );

printArray(a);

}while(bool == true && i < alength);

Systemoutprintln(改进的冒泡排序结果);

printArray(a);

}

private static void bubbleSortBetter(int[] a){

Systemoutprintln(改进的冒泡排序过程);

boolean bool;

int i = ;

do{

bool = false;

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

if(a[j] > a[j + ]){

int temp = a[j];

a[j] = a[j + ];

a[j + ] = temp;

bool = true;

}

}

i ++;

Systemoutprint( + i + );

printArray(a);

}while(bool == true && i < alength);

Systemoutprintln(改进的冒泡排序结果);

printArray(a);

}

运行结果

改进的冒泡排序过程

改进的冒泡排序结果

与之前算法对比可见效果

               

上一篇:JAVA处理含有DataSet的web services

下一篇:如何使用Java模拟.NET的连接池