zoukankan      html  css  js  c++  java
  • 选择排序 冒泡排序

    选择排序效率是冒泡的2倍。


    冒泡算法描述:  
    在解释冒泡排序算法之前,先来介绍把10个数(放在数组A中)中最大的那个数放在最后位置上的一种算法。算法描述如下:  
    (1)从数组A[1]到A[10],把相临的两个数两两进行比较。即A[1]和A[2]比较,比较完后A[2]再与A[3]比较,……最后是A[9]和A[10]比较。  
    (2)在每次进行比较的过程中,如果前一个数比后一个数大,则对调两个数,也就是说把较大的数调到后面,较小的调到前面。比如在第一次的比较中,如果A[1]比A[2]大则A[1]和A[2]的值就互换。下图用6个数据来说明以上的算法。  
    假设6个数据是:A[]=5 7 4 3 8 6  
    A[1] A[2] A[3] A[4] A[5] A[6]  
    5 7 4 3 8 6 第一次,A[1]=5和A[2]=7比较,7>5,不进行对调。  
    5 7 4 3 8 6 第二次,A[2]=7和A[3]=4比较,4<7,进行对调,  
    那么第二次比较完后的数据是5 4 7 3 8 6  
    5 4 7 3 8 6 第三次,A[3]=7和A[4]=3比较,3<7,进行对调,  
    那么第三次比较完后的数据是5 4 3 7 8 6  
    5 4 3 7 8 6 第四次,A[4]=7和A[5]=8比较,8>7,不进行对调。  
    5 4 3 7 8 6 第五次,A[6]=6和A[5]=8比较,6<8,进行对调,  
    那么第五次也就是最后一次的结果是  
    5 4 3 7 6 8  

    public void bublleSort(int[] array){
      int length = array.length;
      for(int i=length-1;i>0;i--)
        for(int j=0;j<i;j++)
          if(array[j] < array[j+1]) {
            int temp = array[j];
            array[j] = array[j+1];
            array[j+1] = temp; 
         }
    }


    选择排序算法描述:  
    在介绍选择排序法之前先介绍一种把最小的数放在第一个位置上 的算法,当然也可以用前面所讲的冒泡排序法,现在我们改用一种新的算法:其指导思想是先并不急于调换位置,先从A[1]开始逐个检查,看哪个数最小就记下 该数所在的位置P,等一躺扫描完毕,再把A[P]和A[1]对调,这时A[1]到A[10]中最小的数据就换到了最前面的位置。算法的步骤如下:  
    1)、先假设A[1]中的数最小,记下此时的位置P=1;  
    2)、依次把A[P]和A[I](I从2变化到10)进行比 较,每次比较时,若A[I]的数比A[P]中的数小,则把I的值赋给P,使P总是指向当前所扫描过的最小数的位置,也就是说A[P]总是等于所有扫描过的 数最小的那个数。在依次一一比较后,P就指向10个数中最小的数所在位置,即A[P]就是10个数中最小的那个数;  
    3)把A[P]和A[1]的数对调,那么最小的数就在A[1]中去了,也就是在最前面了。  
    如果现在重复此算法,但每重复一次,进行比较的数列范围就向 后移动一个位置。即第二遍比较时范围就从第2个数一直到第N个数,在此范围内找最小的数的位置P,然后把A[P]与A[2]对调,这样从第2个数开始到第 N个数中最小数就在A[2]中了,第三遍就从第3个数到第N个数中去找最小的数,再把A[P]与A[3]对调……此过程重复N-1次后,就把A数组中N个 数按从小到大的顺序排好了。这种排序的方法就是选择排序法 。
    public void selectSort(int[] a){
      int length = a.length;
      for(int i=0;i<a.length;i++){
        int min = i;
     /**           
     内层循环,在未排的部分中找到最小的那个               
     把它的下标记在index变量中                 
    */
        for(int j=i+1;j<a.length;j++){
          if (a[j] < a[min]){
            min = j;
          } 
        }
       if (min != i){
          int temp = a[i];
          a[i] = a[index];
          a[index] = temp;
       } 
       }
    }

  • 相关阅读:
    python爬虫之Anaconda安装
    python爬虫之scrapy安装(一)
    python爬虫之redis环境简单部署
    python爬虫之Phantomjs安装和使用
    python爬虫之win7Mongod安装使用
    python爬虫之PyQuery的基本使用
    python爬虫之xpath的基本使用
    python爬虫之git的使用(windows下pycharm使用)
    Sass教程
    Vue.js教程—1.介绍和安装
  • 原文地址:https://www.cnblogs.com/davidwang/p/3592993.html
Copyright © 2011-2022 走看看