• 交换排序


          交换排序包括冒泡排序快速排序

      冒泡排序

    • 基本思想

      将序列中第一个元素与第二个元素进行比较,如果前者大于后者,则两个元素交换位置,否则不交换;再将第二个元素与第三个元素比较,按照之前处理方式,依次类推。经过这样一趟排序,使得n个元素中最大的元素被放到最后一个位置。之所以叫冒泡排序,就是因为每次比较都会把较小的元素往前移,所以就慢慢的冒出来。

    • 复杂度分析

      冒泡排序的外层for循环次数为n-1,内层for循环的循环次数为i,克制内层的比较次数为n(n-1)/2=O(n2)。所以,冒泡排序最好、最坏、平均情况下的时间复杂度是相同的。

    • 代码实现
     1 public int[] sort2(int[] array) {
     2         // 冒泡排序
     3         for (int i = 0; i < array.length; i++) {
     4             for (int j = 0; j < array.length - 1 - i; j++) {
     5                 if (array[j] > array[j + 1]) {
     6                     int tmp = array[j];
     7                     array[j] = array[j + 1];
     8                     array[j + 1] = tmp;
     9                 }
    10             }
    11         }
    12         return array;
    13     }

      快速排序

    • 基本思想

      快速排序平均时间性能最快。任选序列中的一个记录(通常选第一个记录)作为枢轴,以它的关键字和数组中其他的记录进行比较,将所有关键字比它小的记录都排在它的前面,将所有关键字比它大的记录都排在它之后。经过一趟排序后,按此记录所在位置为界,将序列划分为两个部分,再对着两个部分重复上述的操作,直至每一个部分中只剩一个记录为止。

    • 复杂度分析

      快速排序被公认为所有同数量级O(nlogn)的排序中平均性能是最好的,其时间复杂度是O(n2)

    • 代码实现
     1 public void sort4(int[] array, int left, int right) {
     2         // 递归实现快排
     3         if (left < right) {
     4             int tmp = array[left];
     5             int i = left, j = right;
     6             while (i < j) {
     7                 while (i < j && array[j] >= tmp) j--;
     8                 array[i] = array[j];
     9                 while (i < j && array[i] <= tmp) i++;
    10                 array[j] = array[i];
    11             }
    12             array[i] = tmp;
    13             sort4(array, left, i - 1);
    14             sort4(array, i + 1, right);
    15         }
    16     }
  • 相关阅读:
    应用wordpress
    php引入fckeditor编辑工具
    php_bu
    AJAX回调函数
    AJAX 输入框后写提示
    收集几个不错的最新win10系统64位和32位系统Ghost版下载
    曝光最新WIN10系统32位,64位系统ghost版
    微软本月将推Win10 望打破Win8所带来差评影响
    最新官方WIN10系统32位,64位系统ghost版下载
    记一次苦逼的SQL查询优化
  • 原文地址:https://www.cnblogs.com/pyexile/p/10958171.html
Copyright © 2020-2023  润新知