冒泡
- 思路:按照符合逻辑的顺序,排列两个相邻的元素。一共有length-1轮,每一轮有length-i-1次。
i轮是将元素移动到第i个对的位置上。
import java.util.Arrays;
public class BubbleSort {
public static void main(String[] args) {
int[] num={3,10,7,1,8};
bubblesort(num);
System.out.println(Arrays.toString(num));
}
public static void bubblesort(int[] num){
for (int i = 0; i < num.length-1; i++) {
for (int i1 = 0; i1 < num.length-1-i; i1++) {
if(num[i1]>num[i1+1]){
int temp=num[i1+1];
num[i1+1]=num[i1];
num[i1]=temp;
}
}
}
}
}
- 代码分析:
冒泡排序在每一轮的每一次的比较中,都实现数组元素的交换,导致了处理数据速度的变慢。
选择排序
- 思路:一共有length-1轮,在每一轮中,都会找出第i小的数,来放到第i个位置上面。开始的时候,将初始下标指向的元素,默认为合适的数,在每一次的比较找中,会找到符合逻辑的数来代替默认为合适的数,使其符合要求。
import java.util.Arrays;
public class SelectSort {
public static void main(String[] args) {
int[] num={7,1,9,101,15,3,8,10};
selectsort(num);
System.out.println(Arrays.toString(num));
}
public static void selectsort(int[] num){
for (int i = 0; i < num.length-1; i++) {
for (int i1 = 1; i1 < num.length-i; i1++) {
int min=num[i];
if(num[i+i1]<num[i]){
min=num[i+i1];
num[i+i1]=num[i];
num[i]=min;
}
}
}
}
}
- 代码分析:
冒泡与选择,在时间复杂度上都是一样的-(n*n),但是选择排序的数据交换只进行了n-1次,使用选择排序的运行速度会大大的提高。