排序方法总结(1)
排序方法总结(1)
简单的排序方法
1. 选择排序
思路:每次一排序选择最小的元素进行交换。
代码实现:
void selectSort(Elem [] elem){
int len = elem.length;
for(int i = 0; i < len;i++){
int j = i;
for(int k = i+1;k < len;k++){
if(elem[k] < elem[i]) j = k;
}
if(i != j){
Elem tmp = elem[i];
elem[i] = elem[j];
elem[j] = tmp;
}
}
}
复杂度O(n^2),上面代码会导致排序不稳定,实际上,选择排序是稳定的。
2. 插入排序
思路:将无序序列中的元素插入到有序序列。
代码实现:
void insertSort(Elem [] elem){
int len = elem.length;
for(int i = 1;i < len;i++){
Elem index = elem[i];
for(int j = 0;j < i;j++){
if(elem[j] > index){
index = elem[j];
elem[j] = elem[i];
elem[i] = index;
}
}
}
}
复杂度O(n^2),稳定排序方法。
3.冒泡排序
思路:每一次最大的元素下沉。
代码实现:
void bubbleSort(Elem [] elem){
int len = elem.length;
int i = len;
int index;
while(i > 1){
index = 1;
for(int j = 1;j < i;j++){
if(elem[j] < elem[j-1]){
Elem tmp = elem[j];
elem[j] = elem[i];
elem[i] = tmp;
index = j;
}
}
i = index;
}
}
复杂度O(n^2),稳定排序方法。

浙公网安备 33010602011771号