冒泡排序、选择排序、插入排序、快速排序算法的时间性能分析(java实现)
2008-11-09 19:12
1011 查看
冒泡排序、选择排序、插入排序、快速排序算法的时间性能分析(java实现)
public class Sort
{
public void swap(int a[], int i, int j)
{
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
public int partition(int a[], int low, int high)
{
int pivot, p_pos, i;
p_pos = low;
pivot = a[p_pos];
for (i = low + 1; i <= high; i++)
{
if (a[i] > pivot)
{
p_pos++;
swap(a, p_pos, i);
}
}
swap(a, low, p_pos);
return p_pos;
}
public void quicksort(int a[], int low, int high)
{
int pivot;
if (low < high)
{
pivot = partition(a, low, high);
quicksort(a, low, pivot - 1);
quicksort(a, pivot + 1, high);
}
}
public static void main(String args[])
{
int vec[] = new int[] { 77, 19, 27, -9, 19, 34 };
int temp;
System.out.println("对37, 47, 23, -5, 19, 56进行排序");
// 选择排序法(Selection Sort)
long begin = System.currentTimeMillis();
for (int k = 0; k < 1000000; k++)
{
for (int i = 0; i < vec.length; i++)
{
for (int j = i; j < vec.length; j++)
{
if (vec[j] > vec[i])
{
temp = vec[i];
vec[i] = vec[j];
vec[j] = temp;
}
}
}
}
long end = System.currentTimeMillis();
System.out.println(); //另起一行
System.out.println("选择法用时为:" + (end - begin) + "/n排序结果:");
// 打印排序好的结果
for (int i = 0; i < vec.length; i++)
{
System.out.print(vec[i]);
System.out.print(" ");
}
// 冒泡排序法(Bubble Sort)
begin = System.currentTimeMillis();
for (int k = 0; k < 1000000; k++)
{
for (int i = 0; i < vec.length; i++)
{
for (int j = i; j < vec.length - 1; j++)
{
if (vec[j + 1] > vec[j])
{
temp = vec[j + 1];
vec[j + 1] = vec[j];
vec[j] = temp;
}
}
}
}
end = System.currentTimeMillis();
System.out.println(); //另起一行
System.out.println("冒泡法用时为:" + (end - begin)+ "/n排序结果:");
// 打印排序好的结果
for (int i = 0; i < vec.length; i++)
{
System.out.print(vec[i]);
System.out.print(" ");
}
// 插入排序法(Insertion Sort)
begin = System.currentTimeMillis();
for (int k = 0; k < 1000000; k++)
{
for (int i = 1; i < vec.length; i++)
{
int j = i;
while (vec[j - 1] < vec[i])
{
vec[j] = vec[j - 1];
j--;
if (j <= 0)
{
break;
}
}
vec[j] = vec[i];
}
}
end = System.currentTimeMillis();
System.out.println(); //另起一行
System.out.println("插入法用时为:" + (end - begin)+ "/n排序结果:");
// 打印排序好的结果
for (int i = 0; i < vec.length; i++)
{
System.out.print(vec[i]);
System.out.print(" ");
}
// 快速排序法(Quick Sort)
Sort s = new Sort();
begin = System.currentTimeMillis();
for (int k = 0; k < 1000000; k++)
{
s.quicksort(vec, 0, 5);
}
end = System.currentTimeMillis();
System.out.println(); //另起一行
System.out.println("快速法用时为:" + (end - begin)+ "/n排序结果:");
// 打印排序好的结果
for (int i = 0; i < vec.length; i++)
{
System.out.print(vec[i]);
System.out.print(" ");
}
}
}
public class Sort
{
public void swap(int a[], int i, int j)
{
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
public int partition(int a[], int low, int high)
{
int pivot, p_pos, i;
p_pos = low;
pivot = a[p_pos];
for (i = low + 1; i <= high; i++)
{
if (a[i] > pivot)
{
p_pos++;
swap(a, p_pos, i);
}
}
swap(a, low, p_pos);
return p_pos;
}
public void quicksort(int a[], int low, int high)
{
int pivot;
if (low < high)
{
pivot = partition(a, low, high);
quicksort(a, low, pivot - 1);
quicksort(a, pivot + 1, high);
}
}
public static void main(String args[])
{
int vec[] = new int[] { 77, 19, 27, -9, 19, 34 };
int temp;
System.out.println("对37, 47, 23, -5, 19, 56进行排序");
// 选择排序法(Selection Sort)
long begin = System.currentTimeMillis();
for (int k = 0; k < 1000000; k++)
{
for (int i = 0; i < vec.length; i++)
{
for (int j = i; j < vec.length; j++)
{
if (vec[j] > vec[i])
{
temp = vec[i];
vec[i] = vec[j];
vec[j] = temp;
}
}
}
}
long end = System.currentTimeMillis();
System.out.println(); //另起一行
System.out.println("选择法用时为:" + (end - begin) + "/n排序结果:");
// 打印排序好的结果
for (int i = 0; i < vec.length; i++)
{
System.out.print(vec[i]);
System.out.print(" ");
}
// 冒泡排序法(Bubble Sort)
begin = System.currentTimeMillis();
for (int k = 0; k < 1000000; k++)
{
for (int i = 0; i < vec.length; i++)
{
for (int j = i; j < vec.length - 1; j++)
{
if (vec[j + 1] > vec[j])
{
temp = vec[j + 1];
vec[j + 1] = vec[j];
vec[j] = temp;
}
}
}
}
end = System.currentTimeMillis();
System.out.println(); //另起一行
System.out.println("冒泡法用时为:" + (end - begin)+ "/n排序结果:");
// 打印排序好的结果
for (int i = 0; i < vec.length; i++)
{
System.out.print(vec[i]);
System.out.print(" ");
}
// 插入排序法(Insertion Sort)
begin = System.currentTimeMillis();
for (int k = 0; k < 1000000; k++)
{
for (int i = 1; i < vec.length; i++)
{
int j = i;
while (vec[j - 1] < vec[i])
{
vec[j] = vec[j - 1];
j--;
if (j <= 0)
{
break;
}
}
vec[j] = vec[i];
}
}
end = System.currentTimeMillis();
System.out.println(); //另起一行
System.out.println("插入法用时为:" + (end - begin)+ "/n排序结果:");
// 打印排序好的结果
for (int i = 0; i < vec.length; i++)
{
System.out.print(vec[i]);
System.out.print(" ");
}
// 快速排序法(Quick Sort)
Sort s = new Sort();
begin = System.currentTimeMillis();
for (int k = 0; k < 1000000; k++)
{
s.quicksort(vec, 0, 5);
}
end = System.currentTimeMillis();
System.out.println(); //另起一行
System.out.println("快速法用时为:" + (end - begin)+ "/n排序结果:");
// 打印排序好的结果
for (int i = 0; i < vec.length; i++)
{
System.out.print(vec[i]);
System.out.print(" ");
}
}
}
相关文章推荐
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- java实现各种排序算法(包括冒泡排序,选择排序,插入排序,快速排序(简洁版))及性能测试
- java实现冒泡排序,选择排序,插入排序,快速排序(简洁版)及性能测试
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 元素排序几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- java实现冒泡排序,选择排序,插入排序,快速排序(简洁版)及性能测试
- 几种常见排序算法之Java实现(插入排序、希尔排序、冒泡排序、快速排序、选择排序、归并排序)
- java选择排序、冒泡排序和插入排序实现
- java实现 冒泡排序 插入排序 选择排序
- Java 实现三种简单排序——选择排序、插入排序、冒泡排序
- 排序基础之插入排序、冒泡排序、选择排序详解与Java代码实现
- Java分别实现冒泡排序、插入排序、快速排序、选择排序、交换排序
- 冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序java实现
- java 实现 冒泡排序、选择排序、插入排序。
- Java程序员从笨鸟到菜鸟(二)Java实现冒泡排序、快速排序、插入排序、选择排序等基本排序方式
- Java实现冒泡排序,选择排序,插入排序
- 冒泡排序、选择排序、插入排序(Java实现)
- java 实现 冒泡排序、选择排序、插入排序。
- 简单排序Java实现(一):冒泡排序,选择排序,插入排序(原理及实现)
- 简单选择排序的Java实现、性能分析以及适用场景