排序小程序
冒泡排序
冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
package sort;
import java.util.Arrays;
public class Bubble_sort {
public static void main(String[] args) {
int[] array = { 5, 4, 3, 2, 7, 6, 9, 8, 0, 1 };
int temp;
for(int i = 0;i < array.length-1;i++){
for (int j = i + 1; j < array.length; j++) {
if (array[i] > array[j]) {
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
System.out.println(Arrays.toString(array));
}
}
选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下:
首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕
package sort;
import java.util.Arrays;
public class SelectedSort {
public static void main(String[] args) {
int[] list = { 2, 4, 3, 5, 12, 23, 345, 12, 23, 56, 68, 23, 5, 6, 79,
354, 6, 7, 9, 8 };
int currentMin;
int tempValue;
for (int i = 0; i < list.length - 1; i++) {
currentMin = list[i];
for (int j = i + 1; j < list.length; j++) {
if (currentMin >= list[j]) {
tempValue = currentMin;
currentMin = list[j];
list[j] = tempValue;
}
}
list[i] = currentMin;
}
System.out.println(Arrays.toString(list));
}
}
插入排序,一维数组
1 5 7 3 1 6
把表分成两部分,前半部分已排序,后半部分未排序,我用|分开
初始为 5 | 1 7 3 1 6
一次插入排序,把第一个1插入前边已排序部分,得
1 5 | 7 3 1 6
后边依次是
1 5 7 | 3 1 6
1 3 5 7 | 1 6
1 1 3 5 7 | 6
1 1 3 5 6 7 |
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法--插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。
package sort;
import java.util.Arrays;
public class InsertSort {
public static void main(String[] args) {
int[] array = { 1, 4, 3, 2, 5, 7, 9, 0, 4 };
int target;
int i, j;
for(i = 1;i<array.length;i++){
j = i;
target = array[i];
// { 1, 3, 4, 2, 5, 7, 9, 0, 4 };
while (j > 0 && target < array[j - 1]) {
array[j] = array[j - 1];
j--;
}
array[j] = target;
}
System.out.println(Arrays.toString(array));
}
}
快速排序
package sort;
import java.util.Arrays;
public class QuickSortEx {
public static void main(String[] args) {
int[] array = { 9, 4, 3, 2, 1, 5, 6, 7, 8, 5, 3, 2, 1, 4, 4, 4, 5, 6,
7, 5 };
quicksort(array, 0, array.length - 1);
System.out.println(Arrays.toString(array));
}
private static void quicksort(int[] array, int left, int right) {
int dp;
if (left < right) {
dp = getdp(array, left, right);
quicksort(array, left, dp - 1);
quicksort(array, dp + 1, right);
}
}
private static int getdp(int[] array, int left, int right) {
int dm = array[left];
while (left < right) {
while (left < right && array[right] >= dm) {
right--;
}
if (left < right) {
array[left++] = array[right];
}
while (left < right && array[left] <= dm) {
left++;
}
if (left < right) {
array[right--] = array[left];
}
}
array[left] = dm;
return left;
}
}

浙公网安备 33010602011771号