排序方法总结(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),稳定排序方法。

posted @ 2016-07-11 15:35  HaoKang  阅读(143)  评论(0)    收藏  举报