首页 > 代码库 > 数据结构之--冒泡排序算法及改进
数据结构之--冒泡排序算法及改进
冒泡排序,是我们学习数据结构第一个排序算法,也是一种最常见和简单的排序算法。
排序原理:
我们把一个数组从左到右依次两两元素比较,比较完成一趟后,能确定最大(最小)值,放在最右边(最左边);
剩下的元素重复上述步骤,直到整个数组有序。
该算法时间复杂度一般为n2 。
java实现代码如下:
public class BubbleSort { public static void swap(int[] array, int a, int b) { array[a] = array[a] ^ array[b]; array[b] = array[b] ^ array[a]; array[a] = array[a] ^ array[b]; } public static void sort1(int[] array, int length) { for(int i = 0; i < length -1; i++) { for (int j = 0; j < length - 1 - i; j++) { if (array[j] > array[j +1]) swap(array, j, j+1); } } } }
该算法有一种改进算法,叫鸡尾酒排序,也叫定向冒泡排序。
我们可以同时遍历出最大和最小的数,并放在两边,后面继续重复上述步骤,某些情况下(比如数据大部分有序),会比第一种时间复杂度低。
JAVA实现如下:
public class BubbleSort { public static void swap(int[] array, int a, int b) { array[a] = array[a] ^ array[b]; array[b] = array[b] ^ array[a]; array[a] = array[a] ^ array[b]; } public static void sort2(int[] array, int length) { int start = 0; int end = length -1 ; while(start < end) { for(int i = start; i < end; i++) { if (array[i] > array[i +1]) swap(array, i, i+1); } end --;for(int j = end; j > start; j--) { if (array[j] < array[j - 1]) swap(array, j, j-1); } start++; } } }
数据结构之--冒泡排序算法及改进
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。