zoukankan      html  css  js  c++  java
  • 学习笔记---算法

    今天无聊又开始在看算法了,可惜看那么久还是在看简单的排序,把今天的成果贴出来吧

     1 package sort;
     2 
     3 //冒泡排序
     4 public class BubbleSort {
     5     //the bubblesort method
     6     public static int[] bubbleSort(int[] list) {
     7         //the boolean varaible for check is the last varaible of the list
     8         //if true,the sort method will be stoped.
     9         boolean isNeedNextSort = true;
    10         //if index equals list's length
    11         for (int index = 1;index < list.length && isNeedNextSort;index++) {
    12             //let the boolean varaible be false;
    13             isNeedNextSort = false;
    14             //if  the varaible nor lower than list.length-index,
    15             //in other word,the list's length is equals index,
    16             //the next sort can be stop.
    17             for(int varaible = 0;varaible < list.length-index;varaible++){
    18                 if(list[varaible] > list[varaible+1]){
    19                     int temp = list[varaible];
    20                     list[varaible] = list[varaible+1];
    21                     list[varaible+1] = temp;
    22                 }
    23                 //there will be a next sort
    24                 isNeedNextSort = true;
    25             }
    26         }
    27         return list;
    28     }
    29 }
     1 package sort;
     2 
     3 //归并排序,至今还有点迷糊,第二次mergeSort()怎么执行的
     4 public class MergeSort {
     5     
     6     /**
     7      * The MegerSort Method 
     8      */
     9     
    10     public static int[] mergeSort(int[] list){
    11         /**
    12          * MergeSort the first half
    13          */
    14         
    15         //if there has more than 1 elements
    16         if(list.length > 1){
    17             //create a array which can contain the list's half
    18             int[] firstHalf = new int[list.length/2];
    19             //arraycopy:copy the first half of list to firstHalf
    20             System.arraycopy(list, 0, firstHalf, 0, list.length/2);
    21             //mergesort the half too,until it's elements is 1
    22             mergeSort(firstHalf);
    23             
    24             /**
    25              * MergeSort the secondhalf
    26              */
    27             
    28             //figureout the secondHalf array's length
    29             int secondHalfLength = list.length-list.length/2;
    30             //create the secondhalf array
    31             int[] secondHalf = new int[secondHalfLength];
    32             //arraycopy:copy the second half of list to secondHalf
    33             System.arraycopy(list, list.length/2, secondHalf, 0, secondHalfLength);
    34             //mergesort the half too,until it's elements is 1
    35             mergeSort(secondHalf);
    36             
    37             int[] temp = merge(firstHalf,secondHalf);
    38             System.arraycopy(temp, 0, list, 0, temp.length);
    39         }
    40         return list;
    41     }
    42     
    43     /**
    44      * The Meger Method
    45      */
    46     
    47     private static int[] merge(int[] firstHalf, int[] secondHalf) {
    48         //create a array called temp,it's length equals list's
    49         int[] temp = new int[firstHalf.length+secondHalf.length];
    50         //create three index of three array
    51         int firstHalf_index = 0;
    52         int secondHalf_index = 0;
    53         int temp_index = 0;
    54         //all the rest code is just for sort the all elements
    55         while (firstHalf_index < firstHalf.length && secondHalf_index < secondHalf.length) {
    56             if (firstHalf[firstHalf_index] <= secondHalf[secondHalf_index]) {
    57                 temp[temp_index] = firstHalf[firstHalf_index];
    58                 firstHalf_index++;
    59             } else {
    60                 temp[temp_index] = secondHalf[secondHalf_index];
    61                 secondHalf_index++;
    62             }
    63             temp_index++;
    64         }
    65  
    66         if (firstHalf_index == firstHalf.length) {
    67             while (secondHalf_index < secondHalf.length) {
    68                 temp[temp_index++] = secondHalf[secondHalf_index++];
    69             }
    70         } else { 
    71             // secondHalf_index==secondHalf.length
    72             while (firstHalf_index < firstHalf.length) {
    73                 temp[temp_index++] = firstHalf[firstHalf_index++];
    74             }
    75         }
    76         return temp;
    77     }
    78 }
  • 相关阅读:
    深圳移动 神州行(大众卡/轻松卡/幸福卡)套餐资费(含香港日套餐)信息及使用方法
    PHP设置时区,记录日志文件的方法
    微信公众平台消息接口使用指南
    C#日期时间格式化
    使用CMD实现批量重命名[转]
    Python高效编程技巧
    实用WordPress后台MySQL操作命令
    ubuntu-wine
    Javascript 笔记与总结(2-8)对象2
    Swift5.3 语言指南(十) 枚举
  • 原文地址:https://www.cnblogs.com/q812717031/p/3273529.html
Copyright © 2011-2022 走看看