1冒泡法排序
<strong><span style="font-size:10px;">public static void main(String[] args) {
// TODO Auto-generated method stub
int[] array = { 14, 5, 86, 4, 12, 3, 21, 13, 11, 2, 55 }; // 创建一个初始化的一维数组array
System.out.println("未排序的数组:");
for (int i = 0; i < array.length; i++) { // 遍历array数组中的元素
System.out.print(" " + array[i]); // 输出数组元素
if ((i + 1) % 5 == 0) // 每5个元素一行
System.out.println();
}
int mid; // 定义一个中间变量,起到临时存储数据的作用
for (int i = 0; i < array.length; i++) { // 执行冒泡排序法
for (int j = i; j < array.length; j++) {
if (array[j] < array[i]) {
mid = array[i];
array[i] = array[j];
array[j] = mid;
}
}
}
System.out.println("\n使用冒泡法排序后的数组:");
for (int i = 0; i < array.length; i++) { // 遍历排好序的array数组中的元素
System.out.print(" " + array[i]); // 输出数组元素
if ((i + 1) % 5 == 0)
System.out.println(); // 每5个元素一行
}
}</span></strong>
2.数组递增法排序
public static void main(String[] args) {
// TODO Auto-generated method stub
Random rd = new Random();
int[] array = new int[15]; // 声明数组
System.out.println("没有使用sort方法前的数组:");
for (int i = 0; i < array.length; i++) { // 利用随机数随意产生15个0~20之间的随机数
array[i] = rd.nextInt(20); // 给array数组赋值
System.out.print(" " + array[i]);
if ((i + 1) % 5 == 0)
System.out.println();
}
Arrays.sort(array); // 对array数组进行升序排序
//Arrays.sort(array,5,14); // 对array数组中的第5个元素~第13个元素之间进行升序排序
System.out.println("\n使用sort方法后的数组:");
for (int i = 0; i < array.length; i++) { // 将array数组中的数据输出
System.out.print(" " + array[i]);
if ((i + 1) % 5 == 0)
System.out.println();
}<span style="font-family: Arial, Helvetica, sans-serif;"> }</span>
3.选择排序
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] array = { 14, 5, 86, 4, 12, 3, 51, 13, 11, 2, 32, 6 }; // 创建一个初始化的一维数组array
int keyValue; // 表示最小的元素值
int index; // 表示最小的元素值的下标
int temp; // 中间变量
System.out.println("未排序的数组:");
for (int i = 0; i < array.length; i++) { // 遍历array数组中的元素
System.out.print(" " + array[i]); // 输出数组元素
if ((i + 1) % 5 == 0) // 每5个元素一行
System.out.println();
}
for (int i = 0; i < array.length; i++) { // 使用选择排序法的核心
index = i;
keyValue = array[i];
for (int j = i; j < array.length; j++)
if (array[j] < keyValue) {
index = j;
keyValue = array[j];
}
temp = array[i];
array[i] = array[index];
array[index] = temp;
}
System.out.println("\n使用选择排序法后的数组:");
for (int i = 0; i < array.length; i++) { // 遍历排好序的array数组中的元素
System.out.print(" " + array[i]); // 输出数组元素
if ((i + 1) % 5 == 0)
System.out.println(); // 每5个元素一行
}
}
4.快速排序法
package paixu;
public class kspx {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] intArray = { 12, 11, 45, 6, 8, 43, 40, 57, 3, 20, 15 };
System.out.println("排序前的数组:");
for (int i = 0; i < intArray.length; i++) {
System.out.print(" " + intArray[i]); // 输出数组元素
if ((i + 1) % 5 == 0) // 每5个元素一行
System.out.println();
}
System.out.println();
int[] b = quickSort(intArray, 0, intArray.length - 1); // 调用quickSort
System.out.println("使用快迅排序法后的数组:");
for (int i = 0; i < b.length; i++) {
System.out.print(" " + b[i]);
if ((i + 1) % 5 == 0) // 每5个元素一行
System.out.println();
}
}
public static int getMiddle(int[] array, int left, int right) {
int temp;
// 进行一趟快速排序,返回中心点位置
int mid = array[left]; // 把中心置于a[0]
while (left < right) {
while (left < right && array[right] >= mid)
right--;
temp = array[right]; // 将比中心点小的数据移动到左边
array[right] = array[left];
array[left] = temp;
while (left < right && array[left] <= mid)
left++;
temp = array[right]; // 将比中心点大的数据移动到右边
array[right] = array[left];
array[left] = temp;
}
array[left] = mid; // 中心移到正确位置
return left; // 返回中心点
}
public static int[] quickSort(int[] array, int left, int right) {// 快速排序法
if (left < right - 1) { // 如果开始点和结点没有重叠的时候,也就是指针没有执行到结尾
int mid = getMiddle(array, left, right); // 重新获取中间点
quickSort(array, left, mid - 1);
quickSort(array, mid + 1, right);
}
return array;
}
}