1、冒泡排序
public static void main(String[] args)
{
int[] a = { 3, 5, 9, 1, 13, 5 };
int[] b = BubbleSort(a);
for (int j = 0; j < a.length; j++)
{
System.out.println(b[j]);
}
}
public static int[] BubbleSort(int[] array)
{
int len = array.length;
for (int i = 0; i < len - 1; i++)//外层循环控制排序趟数
{
for (int j = 0; j < len - i - 1; j++)//内层循环控制每一趟排序多少次
{
if (array[j] > array[j + 1])
{
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
return array;
}
2、快排
public static void main(String[] args)
{
int[] a =
{ 3, 6, 8, 1, 3, 5, 9, 2 };
quickSort(a, 0, 7);
for (int i = 0; i < a.length; i++)
{
System.out.println(a[i]);
}
}
/*
* 需要理解思想
*/
public static int partition(int[] array, int left, int right)
{
// 固定的切分方式
int key = array[left];
while (left < right)
{
while (array[right] >= key && right > left)
{// 从后半部分向前扫描
right--;
}
array[left] = array[right];
while (array[left] <= key && right > left)
{// 从前半部分向后扫描
left++;
}
array[right] = array[left];
}
array[right] = key;
return right;
}
public static void quickSort(int[] array, int left, int right)
{
if (left >= right)
{
return;
}
int index = partition(array, left, right);
quickSort(array, left, index - 1);
quickSort(array, index + 1, right);
}
3、选择排序
// 分类 -------------- 内部比较排序
// 数据结构 ---------- 数组
// 最差时间复杂度 ---- O(n^2)
// 最优时间复杂度 ---- O(n^2)
// 平均时间复杂度 ---- O(n^2)
// 所需辅助空间 ------ O(1)
// 稳定性 ------------ 不稳定
public static void main(String[] args)
{
int[] a = { 49, 38, 65, 97, 76, 13, 27, 50 };
selectSort(a);
for (int i = 0; i < a.length; i++)
{
System.out.println(a[i]);
}
}
/*
* 选择排序
*/
public static void selectSort(int[] array)
{
int len = array.length;
for (int i = 0; i < len - 1; i++)
{
int min = i;
for (int j = i + 1; j < len; j++)
{
if (array[min] > array[j])
{
min = j;// 记下目前找到的最小值所在的位置
}
}
if (min != i)
{
int tmp = array[i];
array[i] = array[min];
array[min] = tmp;
}
}
}
4、插入排序
public static void insertionSort(int[] array)
{
int len = array.length;
for (int i = 1; i < len; i++)
{
int get = array[i];
int j = i - 1;
while (j >= 0 && array[j] > get)
{
array[j + 1] = array[j];
j--;
}
array[j + 1] = get;
}
}
博客:http://www.cnblogs.com/eniac12/p/5329396.html