zoukankan      html  css  js  c++  java
  • java算法基础——选择排序及优化

    首先是标准的选择排序算法(时间复杂度O(n2)):

     1 public static void sortLow(int[] array) {
     2         int count = 0;
     3         for (int i = 0; i < array.length - 1; i++) {
     4             int min_pos = i;
     5             for (int j = i; j < array.length; j++) {
     6                 if (array[min_pos] > array[j]) {
     7                     min_pos = j;
     8                 }
     9                 count++;
    10             }
    11             swap(array, min_pos, i);
    12         }
    13         printArray(array, count);
    14     }

    然后是自己优化过的选择排序算法:

     1 public static void sortBetter(int[] array) {
     2         int count = 0;
     3         for (int i = 0; i < array.length / 2; i++) {
     4             int min_pos = i;
     5             int max_length = array.length - (1 + i);
     6             int max_pos = max_length;
     7 
     8             for (int j = i + 1; j < array.length - i; j++) {
     9                 if (array[min_pos] > array[j]) {
    10                     min_pos = j;
    11                 }
    12                 if (array[max_pos] < array[array.length - j - 1]) {
    13                     max_pos = array.length - j - 1;
    14                 }
    15                 count++;
    16             }
    17             if (min_pos != i) {
    18                 swap(array, min_pos, i);
    19             }
    20             if (i == max_pos) {
    21                 swap(array, min_pos, max_length);
    22             } else {
    23                 swap(array, max_pos, max_length);
    24             }
    25         }
    26         printArray(array, count);
    27     }

    PS: swap交换两个item位置,print的时候打印了一下 循环次数。哪里还有优化的空间可指出,学习交流。

  • 相关阅读:
    JS运动基础
    用setTimeout模拟QQ延时提示框
    jQuery面向对象的写法
    AngularJS学习笔记
    Scrollbar的样式
    postfix/dovecot邮件服务器
    Git 命令及git服务器
    一个分页功能的实现
    SSE(Server-Sent Events)
    qq上网正常浏览器上不了网
  • 原文地址:https://www.cnblogs.com/wentao1412/p/13236954.html
Copyright © 2011-2022 走看看