• 学习笔记---算法


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

     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 }
  • 相关阅读:
    ASP 调用dll(VB)及封装dll实例
    C#中的Dictionary简介
    C#中Dictionary、ArrayList、Hashtable和Array的区别
    类 Array Arraylist List Hashtable Dictionary
    利用ASP.NET AJAX的Timer讓GridView每隔一段時間做到自動換頁的功能
    nvmw install 失败. 需修改"Msxml2.XMLHTTP"为"Msxml2.ServerXMLHTTP"
    cyark
    [001] winnie the pooh
    把你的英语用起来-七天行动-置之死的而后生
    安卓模拟器还是"genymotion"最靠谱.
  • 原文地址:https://www.cnblogs.com/q812717031/p/3273529.html
Copyright © 2020-2023  润新知