先看个时间复杂度排序空间时间复杂度的图
我这里只写了两个,太费脑子了,现在脑子不够用,其他的后续再写
/**
* 冒泡排序 我不断把相邻两个元素做比较 小的放前 大的放后
* 时间复杂度 O(n)
*/
@Test
public void test1() {
int[] test = {1,3,9,7,11,17,16};
for (int i = 0; i < test.length-1; i++) {
for (int j = 0; j < test.length-1-i; j++) {
if(test[j] > test[j+1] ) {
int temp = test[j];
test[j] = test[j+1];
test[j+1] = temp;
}
}
}
for (int i : test) {
System.err.println(i);
}
}
```java
/**
* 直接插入排序 基本思想 将未排序的数据插入至已排好序序列的合适位置
* 时间复杂度O(n)
*/
@Test
public void test1() {
int[] data = {1,3,9,7,11,17,16};
int temp; // 中间数据
for (int i = 1; i < data.length; i++) { // 循环所有的数据
temp = data[i]; // 赋值给中间数据 先把数组中 第二个数给中间值 然后第一个和第二个进行比较
int j; // 要比较的数的索引 如果是 第一个数 大于第二个数 然后把
for(j = i - 1; j >= 0; j--) {
if(data[j] > temp) { // 如果要比较的数大于中间数
data[j + 1] = data[j]; // 要比较的数往右移 也就是大的在最后
}else{
break;
}
}
data[j + 1] = temp; // 之前已经把大的靠后的 现在把小的放到 大的的前一个位置 i-1 +1 = j 然后把中间数据 赋值给之前比较小的那个
}
for (int i : data) {
System.out.println(i);
}
}