首页 > 代码库 > 交换排序
交换排序
1 交换排序基本思想
交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。
应用交换排序基本思想的主要排序方法有:冒泡排序(Bubble sort)和快速排序(Quick sort)。
2 冒泡排序
2.1 冒泡排序思想
第一趟排序:首先将第一个记录的关键字和第二个记录的关键字比较,若为逆序,则将两个记录交换之,然后比较第二个和第三个的关键字。以此类推,直至第n-1个记录和第n个记录关键字比较为止。该过程为第一趟排序,使得最大的关键字排到了最后面。第二趟排序:对前n-1个记录进行相同操作,完成后使得次大的关键字排在n-1位置上。以此类推,进行第三、四次排序直到排序结束。判断排序结束条件是:在一趟排序过程中没有发生过交换记录的操作。一般第i趟排序是从第1个元素到(n-i+1)个记录依次比较相邻两个记录关键字,并在逆序时交换记录。
总结便是:共比较多少趟,每趟比较多少次。一个两重循环。
2.2 冒泡排序算法实现
public static void bubbleSort(int a[]) { int lenth = a.length; int temp; //共比较lenth-1轮 for (int i = 0; i < lenth - 1; i++) { //每轮比较length-1-j次 for (int j = 0; j < lenth - 1 - i; j++) { if (a[j] > a[j + 1]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } }
2.3 算法效率分析
最好情况:初始序列为正序序列,只需进行一次排序,在此过程中进行n-1次比较,不移动数据。
最差情况:初始序列为逆序序列,需要进行n-1趟排序,需要进行内n(n-1)/2次比较,并且移动数据,每次比较都必须移动记录三次来达到交换记录位置。因此总的时间复杂度为O(n2)。
冒泡排序是就地排序,是稳定的。
交换排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。