数据结构和算法-(排序算法-冒泡排序)

185 阅读1分钟

1.概念:什么是稳定排序和非稳定性排序?

相同元素排序中之后,顺序和之前的顺序一样,则为稳定排序,否则为非稳定性排序。道听途说,不足为惧。都是抄的,天下文章一大抄,先抄了再说。
2. 冒泡排序代码实现
2.1 普通版本
public static void sort1(int arr[]) {
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr.length-i-1; j++) {
				int item = 0;
				if(arr[j]>arr[j+1]) {
					item = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = item;
				}
			}
		}
	}
2.2 优化版本 某一步之后,后面的代码有序了,后面的代码就不排序了。
public static void sort2(int arr[]) {
		for (int i = 0; i < arr.length; i++) {
			boolean iscontinue = true; 
			for (int j = 0; j < arr.length-i-1; j++) {
				int item = 0;
				if(arr[j]>arr[j+1]) {
					item = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = item;
					iscontinue = false;
				}
			}
			if(iscontinue) {
				break;
			}
		}
	}
2.3 优化版2
public static void sort3(int arr[]) {
		int sortborder = arr.length-1;//表示比较的边界
		int lastcomindex = 0; //最后一次比较的位置
		for (int i = 0; i < arr.length; i++) {
			boolean iscontinue = true; 
			for (int j = 0; j < sortborder; j++) {
				int item = 0;
				if(arr[j]>arr[j+1]) {
					item = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = item;
					iscontinue = false;
					lastcomindex = j;
				}
			}
			sortborder = lastcomindex;
			if(iscontinue) {
				break;
			}
		}
	}

第三个我觉得还是很nb。