知识大全 各种排序算法的Java实现
Posted 知
篇首语:不怕山高,就怕脚软。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 各种排序算法的Java实现相关的知识,希望对你有一定的参考价值。
各种排序算法的Java实现 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
package sxsexe study algorithm;
public class SortTest
private static final int ARRAY_SEED = ;
private static final int ARRAY_LENGTH = ;
private static int[] array = new int[ARRAY_LENGTH];
private static void initArray()
for (int i = ; i < ARRAY_LENGTH; i++)
array[i] = (int) (Math random() * ARRAY_SEED);
private static void printArray(boolean before)
String s = null;
if (before)
s = before : ;
else
s = after : ;
System out print(s);
for (int i = ; i < ARRAY_LENGTH; i++)
System out print(array[i] + );
System out println( );
/**
* @param args
*/
public static void main(String[] args)
initArray();
// printArray(true);
long startTime = System currentTimeMillis();
quickSort( ARRAY_LENGTH );
long endTime = System currentTimeMillis();
// printArray(false);
System out println( quick sort length : + ARRAY_LENGTH + took + (endTime startTime) + ms );
initArray();
// printArray(true);
startTime = System currentTimeMillis();
insertSort();
endTime = System currentTimeMillis();
// printArray(false);
System out println( insert sort length : + ARRAY_LENGTH + took + (endTime startTime) + ms );
initArray();
// printArray(true);
startTime = System currentTimeMillis();
selectSort();
endTime = System currentTimeMillis();
// printArray(false);
System out println( select sort length : + ARRAY_LENGTH + took + (endTime startTime) + ms );
initArray();
// printArray(true);
startTime = System currentTimeMillis();
bubbleSort();
endTime = System currentTimeMillis();
// printArray(false);
System out println( bubble sort length : + ARRAY_LENGTH + took + (endTime startTime) + ms );
initArray();
// printArray(true);
startTime = System currentTimeMillis();
binarySearchSort();
endTime = System currentTimeMillis();
// printArray(false);
System out println( binarySearchSort sort length : + ARRAY_LENGTH + took + (endTime startTime) + ms );
private static void quickSort(int left int right)
int key = array[left];
int tmp;
int start = left;
int end = right;
while (left < right)
// 首先从右向左找 找到一个小于key的值 进行交换 然后准备从左向右找
if (array[right] >= key)
right ;
continue;
// 交换
tmp = array[right];
array[right] = array[left];
array[left] = tmp;
// 从左向右找 找到一个大于key的值进行交换 然后循环
if (array[left] <= key)
left++;
continue;
// 交换
tmp = array[right];
array[right] = array[left];
array[left] = tmp;
// 以left right为新数组的起点和终点 递归调用
if (start < left)
quickSort(start left);
if (right < end)
quickSort(right + end);
// System out println( quick sort over );
private static void binarySearchSort()
int i = middle = tmp;
for (; i < ARRAY_LENGTH; i++)
int low = ;
int high = i ;
tmp = array[i];
while (low <= high)
middle = (low + high) / ;
if (tmp > array[middle])
low = middle + ;
else
high = middle ;
for (int k = i; k > middle; k )
array[k] = array[k ];
array[low] = tmp;
private static void insertSort()
int i = j tmp;
for (; i < ARRAY_LENGTH; i++)
tmp = array[i];
j = i;
while (j > && array[j ] > tmp)
array[j] = array[j ];
j ;
array[j] = tmp;
private static void selectSort()
int i = minValue tmp;
int j = i + ;
for (; i < ARRAY_LENGTH ; i++)
minValue = array[i];
for (j = i + ; j < ARRAY_LENGTH; j++)
if (array[j] < minValue)
minValue = array[j];
tmp = array[j];
array[j] = array[i];
array[i] = tmp;
private static void bubbleSort()
int i = ;
int j tmp;
for (; i < ARRAY_LENGTH; i++)
for (j = i + ; j < ARRAY_LENGTH; j++)
if (array[j] < array[i])
tmp = array[j];
array[j] = array[i];
array[i] = tmp;
cha138/Article/program/Java/hx/201311/26125
相关参考
最近在面试遇到很多排序算法问题总结一下 定义数组如下 [java] int[]array=newint[]; int[]array=newint[]; 首先是插入排序 [java]
插入排序: packagerututilalgorithmsupport; importrututilalgorithmSortUtil; publicclassInsertSortim
面试笔试必用-必须掌握的Java排序算法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Java排序
publicclassSort &
一利用二进制状态法求排列组合此种方法比较容易懂但是运行效率不高小数据排列组合可以使用复制代码代码如下:importjavautilArrays; //利用二进制算法进行全排列//count://
排序算法(Java实现):Shell排序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 希尔排序
()在基于比较的排序方法中每次比较两个关键字的大小之后仅仅出现两种可能的转移因此可以用一棵二叉树来描述比较判定 过程 当文件的n个关键字随机分布时任何借助于比较的排序算法至少需要O(nlgn)
以关键字序列()为例分别写出执行以下排序算法的各趟排序结束时关键字序列的状态 ()直接插入排序()希尔排序()冒泡排序()快速排序 ()直接选择排序()堆排序()归并排序()基数排序 上述方
以关键字序列()为例分别写出执行以下排序算法的各趟排序结束时关键字序列的状态 ()直接插入排序()希尔排序()冒泡排序()快速排序 ()直接选择排序()堆排序()归并排序()基数排序 上述方
将哨兵放在R[n]中被排序的记录放在R[n]中重写直接插入排序算法以单链表作为存储结构实现直接插入排序算法 设计一算法使得在尽可能少的时间内重排数组将所有取负值的关键字放在所有取非负值的关键