O(n*n)
插入排序
首先是位置1上的数字与位置0上的数字比较,把小的放在前面;
然后是位置2上的数字与位置1到位置0上的数字比较,把小的放在前面;
然后是位置3上的数字与位置2到位置0上的数字比较,把小的放在前面;
。。。。。。。
import java.util.*;
public class InsertionSort {
public int[] insertionSort(int[] A, int n) {
// write code here
int temp;
for(int i=1; i< n;i++ ){
for (int j=i;j> 0; j--){
if(A[j] < A[j-1]){
temp = A[j];
A[j] = A[j-1];
A[j-1] = temp;
}
}
}
return A;
}
}
位置k上的数字与它前面的值进行比较,直到它前面的数<=它,就把它插入到当前位置
冒泡排序
public static void bubbleSort(int[] numArray) {
int n = numArray.length;
int temp = 0;
for (int i = 0; i < n; i++) {
for (int j = 1; j < (n - i); j++) {
if (numArray[j - 1] > numArray[j]) {
temp = numArray[j - 1];
numArray[j - 1] = numArray[j];
numArray[j] = temp;
}
}
}
}
选择排序
在位置0-n 上,选择一个最小的数放在位置0上;
在位置1-n上,选择一个最小的数放在位置1上;
js 实现
function swap(items, firstIndex, secondIndex){
var temp = items[firstIndex];
items[firstIndex] = items[secondIndex];
items[secondIndex] = temp;
};
function selectionSort(){
let items = [...document.querySelectorAll('.num-queue span')].map(num => +num.textContent);
let len = items.length, min;
for (i = 0; i < len; i++){
min = i;
for(j = i + 1; j < len; j++){
if(items[j] < items[min]){
min = j;
}
}
if(i != min){
swap(items, i, min);
}
}
return items;
};
import java.util.*;
public class SelectionSort {
public int[] selectionSort(int[] A, int n) {
// write code here
int min;
int temp = 0;
for( int i = 0;i < n; i++ ){
min = i;
for( int j= i+1;j< n;j++){
if(A[j]< A[min]){
min = j;
}
}
if(min != i){
temp = A[i];
A[i] = A[min];
A[min] = temp;
}
}
return A;
}
}