黑马程序员技术交流社区
标题:
常用排序算法一览
[打印本页]
作者:
男人你得有范
时间:
2014-8-23 21:49
标题:
常用排序算法一览
package com.itheima;
/**
* 第3题: 请列举您了解的一些排序算法,并用Java语言实现一个效率较高的。
*
* 目前了解的排序方法有冒泡排序、选择排序、插入排序和快速排序
*
* @author hp-pc
* */
public class Test3
{
public static void main(String[] args)
{
// 定义一个int数组并且初始化
int[] arr =
{ 23, 45, 12, 9, 78, 26 };
System.out.println("冒泡排序:");
bubbleSort(arr);
print(arr);
System.out.println("\n---------------------");
System.out.println("选择排序:");
selectSort(arr);
print(arr);
System.out.println("\n---------------------");
System.out.println("插入排序");
insertSort(arr);
print(arr);
System.out.println("\n---------------------");
System.out.println("快速排序");
quickSort(arr, 0, arr.length - 1);
print(arr);
}
// 冒泡排序
public static void bubbleSort(int[] arr)
{
for (int i = 0; i < arr.length - 1; i++)
{
for (int j = 0; j < arr.length - i - 1; j++)
{
if (arr[j] > arr[j + 1])
swap(arr, j, j + 1);
}
}
}
// 选择排序
public static void selectSort(int[] arr)
{
for (int i = 0; i < arr.length - 1; i++)
{
for (int j = i + 1; j < arr.length; j++)
{
if (arr[i] > arr[j])
swap(arr, i, j);
}
}
}
// 插入排序
public static void insertSort(int[] a)
{
for (int i = 1; i < a.length; i++)
{
int temp = a[i];// 待插入的值
int index = i;// 待插入的位置
while (index > 0 && a[index - 1] > temp)
{
a[index] = a[index - 1];// 把更大的值赋给待插入的位置,待插入的位置是移动的
index--;// 待插入位置前移
}
a[index] = temp;
}
}
// 快速排序
public static int partition(int a[], int low, int height)
{
int key = a[low];
while (low < height)
{
while (low < height && a[height] >= key)
height--;
a[low] = a[height];
while (low < height && a[low] <= key)
low++;
a[height] = a[low];
}
a[low] = key;
return low;
}
public static void quickSort(int a[], int low, int height)
{
if (low < height)
{
int result = partition(a, low, height);
quickSort(a, low, result - 1);
quickSort(a, result + 1, height);
}
}
// 定义一个交换变量值的函数
public static void swap(int[] arr, int x, int y)
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
// 打印函数
public static void print(int[] arr)
{
System.out.print("{");
for (int i = 0; i < arr.length; i++)
{
if (i == arr.length - 1)
System.out.print(arr[i] + "}");
else
System.out.print(arr[i] + ",");
}
}
}
复制代码
作者:
小黑子
时间:
2014-8-23 22:15
Mark,看看。
作者:
男人你得有范
时间:
2014-8-23 22:16
小黑子 发表于 2014-8-23 22:15
Mark,看看。
:handshake,哥们要去哪一期???该面试了吧
作者:
小黑子
时间:
2014-8-24 12:30
男人你得有范 发表于 2014-8-23 22:16
,哥们要去哪一期???该面试了吧
没有,还不确定呢,基础视频才看一半
作者:
abc83983682
时间:
2014-8-24 12:57
不错,支持下
作者:
粺¹³¼畅
时间:
2014-8-24 14:33
不错!!!!
作者:
木易在他乡
时间:
2014-8-24 16:08
快速法比较难搞
作者:
liusj
时间:
2014-8-24 21:20
挺好。。。。
作者:
木易在他乡
时间:
2014-8-25 10:09
楼主上图学习下啊
作者:
Justfeeling
时间:
2014-8-25 10:40
楼主够认真详细的!收藏ing
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2