隨筆-126  評論-247  文章-5  trackbacks-0

              
          選擇排序(Selection sort)是一種簡單直觀的排序算法。

          首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再從剩余未排序元素中繼續尋找最小(大)元素,

          然后放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

          C++ 實現代碼片段

             
          //簡單選擇排序,按自然順序
          void selectsort(Element array[], int len){
              
          int index, min, temp;
              
          for(int i = 0; i < len - 1; i++){  // N - 1 趟
                  min = i;
                  
          //查找選擇最小元素值的下標索引值
                  for(index = i + 1; index < len; index++){
                      
          if(array[min] > array[index])
                          min 
          = index;
                  }
                  
          //交換
                  if(min != i){
                      temp 
          = array[min];
                      array[min] 
          = array[i];
                      array[i] 
          = temp;
                  }
              }
          }
             


          Java 實現代碼片段


          //簡單選擇排序,按自然順序
          public static void selectsort(int[] array){
              
          int min, index, temp;
              
          for(int i = 0; i < array.length - 1; i++){  // N - 1 趟
                  min = i;
                  
          //查找選擇最小元素值的下標索引值
                  for(index = i + 1; index < array.length; index++){
                      
          if(array[min] > array[index])
                          min 
          = index;
                  }
                  
          //交換
                  if(min != i){
                      temp 
          = array[min];
                      array[min] 
          = array[i];
                      array[i] 
          = temp;
                  }
              }
          }
            


          C++ 實現完整代碼

             
          /**
           * <!--
           * File   : selectsort.h
           * Author : fancy
           * Email  : fancydeepin@yeah.net
           * Date   : 2013-02-06
           * --!>
           
          */
          #include 
          <stdio.h>
          #include 
          <stdlib.h>
          #define length(array) sizeof(array) / sizeof(array[0])
          #define Element int
          #define format "%d"
             
          //簡單選擇排序,按自然順序
          void selectsort(Element array[], int len){
              
          int index, min, temp;
              
          for(int i = 0; i < len - 1; i++){  // N - 1 趟
                  min = i;
                  
          //查找選擇最小元素值的下標索引值
                  for(index = i + 1; index < len; index++){
                      
          if(array[min] > array[index])
                          min 
          = index;
                  }
                  
          //交換
                  if(min != i){
                      temp 
          = array[min];
                      array[min] 
          = array[i];
                      array[i] 
          = temp;
                  }
              }
          }
             
          //遍歷數組
          void visit(Element array[], int len){
              
          for(int i = 0; i < len; i++){
                  printf(format, array[i]);
              }
          }
             

           

             
          /**
           * <!--
           * File   : SelectSort.cpp
           * Author : fancy
           * Email  : fancydeepin@yeah.net
           * Date   : 2013-02-06
           * --!>
           
          */
          #include 
          "selectsort.h"

          int main() {

              Element array[
          10= {4725869103};
              selectsort(array, length(array));
              visit(array, length(array));
              
          return 0;
          }
             


          Java 實現完整代碼

             
          package net.yeah.fancydeepin.sort.select;
          /**
           * <!--
           * Author : fancy
           * Email  : fancydeepin@yeah.net
           * Date   : 2013-02-06
           * --!>
           
          */
          public class Sort {

              
          private Sort(){}
              
              
          //簡單選擇排序,按自然順序
              public static void selectsort(int[] array){
                  
          int min, index, temp;
                  
          for(int i = 0; i < array.length - 1; i++){  // N - 1 趟
                      min = i;
                      
          //查找選擇最小元素值的下標索引值
                      for(index = i + 1; index < array.length; index++){
                          
          if(array[min] > array[index])
                              min 
          = index;
                      }
                      
          //交換
                      if(min != i){
                          temp 
          = array[min];
                          array[min] 
          = array[i];
                          array[i] 
          = temp;
                      }
                  }
              }
                 
          }
            

           

            
          package test;
          /**
           * <!--
           * Author : fancy
           * Email  : fancydeepin@yeah.net
           * Date   : 2013-02-06
           * --!>
           
          */
          import net.yeah.fancydeepin.sort.select.Sort;

          public class Test {

              
          public static void main(String[] args) {
                  
                  
          int[] array = {4725869103};
                  Sort.selectsort(array);
                  
          for(int obj : array){
                      System.out.print(obj);
                  }
              }
          }
             


           



            
          posted on 2013-02-06 09:52 fancydeepin 閱讀(748) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 阜平县| 南昌市| 平泉县| 六枝特区| 凤山市| 石棉县| 桐乡市| 托里县| 资兴市| 萝北县| 洛南县| 永嘉县| 保康县| 蓝田县| 资讯 | 中阳县| 安多县| 台南市| 辽宁省| 拜泉县| 临江市| 太和县| 蒙山县| 汤阴县| 营口市| 日土县| 盐津县| 松江区| 龙江县| 金沙县| 高唐县| 石楼县| 花垣县| 万年县| 独山县| 鄯善县| 资溪县| 平昌县| 保定市| 宜兴市| 通城县|