数组排序算法
一、冒泡排序
1.基本思想
冒泡排序的基本思想就是相邻两个元素进行比较,较小(或较大)的移动到数组前面,把较大(或较小)的移动到数组后面。由于过程与气泡上浮相似,故命名冒泡法。
2.算法实例
接下来我将演示用冒泡法将以下数组中的元素排序的过程。
{52,4,9,7,14,13}
52 | 4 | 9 | 7 | 14 | 13 |
---|---|---|---|---|---|
4 | 52 | 9 | 7 | 14 | 13 |
4 | 9 | 52 | 7 | 14 | 13 |
4 | 9 | 7 | 52 | 14 | 13 |
4 | 9 | 7 | 14 | 52 | 13 |
4 | 9 | 7 | 14 | 13 | 52 |
4 | 7 | 9 | 14 | 13 | 52 |
4 | 7 | 9 | 13 | 14 | 52 |
3.算法实现
public class Demo1 {
public static void main(String[] args) {
int[] array = {52,4,9,7,14,13};
Demo1 demo1 = new Demo1();
demo1.sort(array);
}
private void sort(int[] array) {
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length-i; j++) {
if (array[j] > array[j + 1]){
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
showArray(array);
}
private void showArray(int[] array) {
for (int i : array){
System.out.print(">" + i);;
}
System.out.println();
}
}
运行结果:
二、直接选择排序
1.基本思想
直接选择排序的基本思想是将指定排序位置元素与其他数组元素分别对比,如果满足条件就交换元素值。注意这里与冒泡排序的区别,不是交换相邻元素,而是把满足条件的元素与指定的排序位置元素交换(如从最后一个元素开始排序),这样排序好的位置逐渐扩大,直至整个数组都变成已排序好的格式。
这就好比有一个小学生,从包含数字110的乱序的数字堆中分别选择合适的数字,组成一个110的排序,而这个学生首先从数字堆中选出1,放在第一位,然后选出2(注意这时数字堆中已经没有1第二位,此类推,直到其找到数字9,放到8的后面,最后剩下 10,就不用选择了,直放到最后就可以。
与冒泡排序相比,直接选择排序的交换次数要少很多,所以速度会快些。
2.算法实例
接下来我将演示用冒泡法将以下数组中的元素排序的过程。
{52,4,9,7,14,13}
【52 | 4 | 9 | 7 | 14 | 13】 |
---|---|---|---|---|---|
【4 | 9 | 7 | 14 | 13】 | 52 |
【4 | 9 | 7 | 13】 | 14 | 52 |
【4 | 9 | 7】 | 13 | 14 | 52 |
【4 | 7】 | 9 | 13 | 14 | 52 |
【4】 | 7 | 9 | 13 | 14 | 52 |
3.算法实现
public class Demo1 {
public static void main(String[] args) {
int[] array = {52,4,9,7,14,13};
Demo1 demo1 = new Demo1();
demo1.sort(array);
}
private void sort(int[] array) {
int index;
for (int i = 1; i < array.length; i++) {
index = 0;
for (int j = 1; j <= array.length - i; j++) {
if (array[j] > array[index]){
index = j;
}
}
int temp = array[array.length - i];
array[array.length - i] = array[index];
array[index] = temp;
}
showArray(array);
}
private void showArray(int[] array) {
for (int i : array){
System.out.print(">" + i);;
}
System.out.println();
}
}
运行结果:
三、反转排序
1.基本思想
反转排序就是将数组中的第一个元素与最后一个元素进行交换。
2.算法实例
接下来我将演示用冒泡法将以下数组中的元素排序的过程。
{4,7,9,13,14,52}
【4 | 7 | 9 | 13 | 14 | 52】 |
---|---|---|---|---|---|
52 | 【7 | 9 | 13 | 14】 | 4 |
52 | 14 | 【9 | 13】 | 7 | 4 |
52 | 14 | 13 | 9 | 7 | 4 |
3.算法实现
public class Demo1 {
public static void main(String[] args) {
int[] array = {52,4,9,7,14,13};
Demo1 demo1 = new Demo1();
demo1.sort(array);
}
private void sort(int[] array) {
System.out.println("数组原有内容:");
showArray(array);
int temp;
int len = array.length;
for (int i = 0; i < len / 2; i++) {
temp = array[i];
array[i] = array[len - 1 - i];
array[len - 1 - i] = temp;
}
System.out.println("数组反转后内容:");
showArray(array);
}
private void showArray(int[] array) {
for (int i : array){
System.out.print("\t" + i);;
}
System.out.println();
}
}
运行结果: