Java 普通算法研究一
2013-01-04 14:10
169 查看
冒泡排序:
class BubbleSort {
public void sort(int[] array) {
for (int i = 1; i < array.length; i++) {
for (int j = 0; j < array.length - 1; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
}
快速排序
class Buicksort {
public int data[];
private int partition(int sortArray[], int low, int hight)
{
int key = sortArray[low];
while (low < hight)
{
while (low < hight && sortArray[hight] >= key)
hight--;
sortArray[low] = sortArray[hight];
while (low < hight && sortArray[low] <= key)
low++;
sortArray[hight] = sortArray[low];
}
sortArray[low] = key;
return low;
}
public void sort(int low, int hight)
{
if (low < hight)
{
int result = partition(data, low, hight);
sort(low, result - 1);
sort(result + 1, hight);
}
}
public void display()
{
for (int i = 0; i < data.length; i++)
{
System.out.print(data[i]);
System.out.print(" ");
}
}
}
测试main函数:
BubbleSort bubbleSort = new BubbleSort();
int[] array = {44,22,2,32,54,22,88,77,99,11};
long t1 = System.currentTimeMillis();
bubbleSort.sort(array);
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]);
System.out.print(" ");
}
long t2 = System.currentTimeMillis();
System.out.println(t2-t1);
System.out.println("\n--------------------------");
Buicksort buicksort = new Buicksort();
int data[] = {44,22,2,32,54,22,88,77,99,11};
buicksort.dat
4000
a = data;
long t3 = System.currentTimeMillis();
buicksort.sort(0, buicksort.data.length-1);
buicksort.display();
long t4 = System.currentTimeMillis();
System.out.println(t4-t3);
System.out.println("\n--------------------------");
int arraydata[] = {44,22,2,32,54,22,88,77,99,11};
long t5 = System.currentTimeMillis();
Arrays.sort(arraydata);
for (int i = 0; i < array.length; i++) {
System.out.print(arraydata[i]);
System.out.print(" ");
}
long t6 = System.currentTimeMillis();
System.out.println(t6-t5);
通过运行结果得出:还是jdk自带的方法运行效果最高!
class BubbleSort {
public void sort(int[] array) {
for (int i = 1; i < array.length; i++) {
for (int j = 0; j < array.length - 1; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
}
快速排序
class Buicksort {
public int data[];
private int partition(int sortArray[], int low, int hight)
{
int key = sortArray[low];
while (low < hight)
{
while (low < hight && sortArray[hight] >= key)
hight--;
sortArray[low] = sortArray[hight];
while (low < hight && sortArray[low] <= key)
low++;
sortArray[hight] = sortArray[low];
}
sortArray[low] = key;
return low;
}
public void sort(int low, int hight)
{
if (low < hight)
{
int result = partition(data, low, hight);
sort(low, result - 1);
sort(result + 1, hight);
}
}
public void display()
{
for (int i = 0; i < data.length; i++)
{
System.out.print(data[i]);
System.out.print(" ");
}
}
}
测试main函数:
BubbleSort bubbleSort = new BubbleSort();
int[] array = {44,22,2,32,54,22,88,77,99,11};
long t1 = System.currentTimeMillis();
bubbleSort.sort(array);
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]);
System.out.print(" ");
}
long t2 = System.currentTimeMillis();
System.out.println(t2-t1);
System.out.println("\n--------------------------");
Buicksort buicksort = new Buicksort();
int data[] = {44,22,2,32,54,22,88,77,99,11};
buicksort.dat
4000
a = data;
long t3 = System.currentTimeMillis();
buicksort.sort(0, buicksort.data.length-1);
buicksort.display();
long t4 = System.currentTimeMillis();
System.out.println(t4-t3);
System.out.println("\n--------------------------");
int arraydata[] = {44,22,2,32,54,22,88,77,99,11};
long t5 = System.currentTimeMillis();
Arrays.sort(arraydata);
for (int i = 0; i < array.length; i++) {
System.out.print(arraydata[i]);
System.out.print(" ");
}
long t6 = System.currentTimeMillis();
System.out.println(t6-t5);
通过运行结果得出:还是jdk自带的方法运行效果最高!
相关文章推荐
- Java中static{}块、{}块和普通代码块的研究
- 用改过的“数字进制转换”枚举字符组合,这是简化的版本。(java,算法研究)
- java中关于爬楼梯算法的研究
- 算法研究之快速排序的基本实现(Java)
- 通过分析 JDK 源代码研究 TreeMap 红黑树算法实现 refer from http://www.ibm.com/developerworks/cn/java/j-lo-tree/index.html?ca=drs-
- java研究一个简单的算法碰到这种输出,哎,以前还真没注意还能这样......
- 身份证号码验证算法深入研究和Java实现
- 二路归并2算法的java实现(普通方法)
- 算法研究之快速排序java版
- JDK自带的二分查找算法和自己写的普通二分查找算法的比较(java二分查找源代码)
- 基于LRU算法的Java对象池设计
- 深入研究java.lang.ThreadLocal类
- 基本算法-堆排序及其Java实现
- 通过分析 JDK 源代码研究 TreeMap 红黑树算法实现
- JAVA经典算法40题
- Java多线程之interrupt()的深度研究
- 单节目变码率TS流复用算法的研究及实现
- 一年去雾算法研究的总结。
- 图像算法---磨皮算法研究汇总
- Java实现九九乘法表的八种经典算法