亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

7種php基本排序實現方法

2024-05-04 23:43:52
字體:
來源:轉載
供稿:網友
這篇文章主要為大家詳細介紹了7種php基本排序實現方法,感興趣的小伙伴們可以參考一下
 

本文總結了一下常用的7種排序方法,并用php語言實現。

1、直接插入排序

/* *  直接插入排序,插入排序的思想是:當前插入位置之前的元素有序, *  若插入當前位置的元素比有序元素最后一個元素大,則什么也不做, *  否則在有序序列中找到插入的位置,并插入 */function insertSort($arr) {  $len = count($arr);    for($i = 1; $i < $len; $i++) {    if($arr[$i-1] > $arr[i]) {      for($j = $i - 1;$j >= 0; $j-- ) {        $tmp = $arr[$j+1];        if($tmp < $arr[$j]) {          $arr[$j+1] = $arr[$j];          $arr[$j] = $tmp;        }else{          break;        }                }      }  }    return $arr;}

2、冒泡排序

/*  冒泡排序,冒泡排序思想:進行 n-1 趟冒泡排序, 每趟兩兩比較調整最大值到數組(子數組)末尾*/function bubbleSort($arr) {  $len = count($arr);  for($i = 1; $i < $len; $i++) {    for($j = 0; $j < $len-$i; $j++) {      if($arr[$j] > $arr[$j+1]) {        $tmp = $arr[$j+1];        $arr[$j+1] = $arr[$j];        $arr[$j] = $tmp;      }    }  }  return $arr;}

3、簡單選擇排序

/*  簡單選擇排序, 簡單排序思想:從數組第一個元素開始依次確定從小到大的元素*/function selectSort($arr) {  $len = count($arr);  for($i = 0; $i < $len; $i++) {    $k = $i;    for($j = $i+1; $j < $len; $j++) {      if($arr[$k] > $arr[$j]) {        $k = $j;      }    }    if($k != $i) {      $tmp = $arr[$i];      $arr[$i] = $arr[$k];      $arr[$k] = $tmp;    }  }  return $arr;}

4、希爾排序

/*  希爾排序,希爾排序原理:將數組按指定步長分隔成若干子序列,然后分別對子序列進行排序(在這是直接)*/function shellSort($arr) {  $len = count($arr);  $k = floor($len/2);  while($k > 0) {    for($i = 0; $i < $k; $i++) {      for($j = $i; $j < $len, ($j + $k) < $len; $j = $j + $k) {        if($arr[$j] > $arr[$j+$k]) {          $tmp = $arr[$j+$k];          $arr[$j+$k] = $arr[$j];          $arr[$j] = $tmp;        }      }    }    $k = floor($k/2);  }  return $arr;}

5、快速排序

/* *  快速排序,快排思想:通過一趟排序將待排的記錄分為兩個獨立的部分,其中一部分的記錄的關鍵字均不大于 *  另一部分記錄的關鍵字,然后再分別對這兩部分記錄繼續進行快速排序,以達到整個序列有序,具體做法需要 *  每趟排序設置一個標準關鍵字和分別指向頭一個記錄的關鍵字和最后一個記錄的關鍵字的指針。 *  quickSort($arr, 0, count($arr) -1); */function quickSort(&$arr,$low,$high) {  if($low < $high) {    $i = $low;    $j = $high;    $primary = $arr[$low];    while($i < $j) {      while($i < $j && $arr[$j] >= $primary) {        $j--;      }      if($i < $j) {        $arr[$i++] = $arr[$j];      }      while($i < $j && $arr[$i] <= $primary) {        $i++;      }      if($i < $j) {        $arr[$j--] = $arr[$i];      }    }    $arr[$i] = $primary;    quickSort($arr, $low, $i-1);    quickSort($arr, $i+1, $high);  }}

6、堆排序

/*  堆排序*/// 調整子堆的為大根堆的過程,$s為子堆的根的位置,$m為堆最后一個元素位置function heapAdjust(&$arr, $s, $m) {  $tmp = $arr[$s];  // 在調整為大根堆的過程中可能會影響左子堆或右子堆  // for循環的作用是要保證子堆也是大根堆  for($j = 2*$s + 1; $j <= $m; $j = 2*$j + 1) {    // 找到根節點的左右孩子中的最大者,然后用這個最大者與根節點比較,    // 若大則進行調整,否則符合大根堆的 特點跳出循環      if($j < $m && $arr[$j] < $arr[$j+1]) {      $j++;    }    if($tmp >= $arr[$j] ) {      break;    }    $arr[$s] = $arr[$j];    $s = $j;  }  $arr[$s] = $tmp;}// 堆排序function heapSort($arr) {  $len = count($arr);  // 依次從子堆開始調整堆為大根堆  for($i = floor($len/2-1); $i >= 0; $i--) {    heapAdjust($arr, $i, $len-1);  }  // 依次把根節點調換至最后一個位置,再次調整堆為大根堆,找到次最大值,  // 依次類推得到一個有序數組  for($n = $len-1; $n > 0; $n--) {    $tmp = $arr[$n];    $arr[$n] = $arr[0];    $arr[0] = $tmp;    heapAdjust($arr, 0, $n-1);  }  return $arr;}

7、歸并排序

/*  歸并排序,這里實現的是兩路歸并*/// 分別將有序的$arr1[s..m]、$arr2[m+1..n]歸并為有序的$arr2[s..n]function Merge(&$arr1, &$arr2, $s, $m, $n) {  for($k = $s,$i = $s, $j = $m+1; $i <= $m && $j <= $n; $k++) {    if($arr1[$i]<$arr1[$j]) {      $arr2[$k] = $arr1[$i++];    }else {      $arr2[$k] = $arr1[$j++];    }  }  if($i <= $m) {    for(; $i <= $m; $i++) {      $arr2[$k++] = $arr1[$i];    }  } else if($j <= $n) {    for(; $j <= $n; $j++) {      $arr2[$k++] = $arr1[$j];    }  }}// 遞歸形式的兩路歸并function MSort(&$arr1, &$arr2, $s, $t) {  if($s == $t) {    $arr2[$s] = $arr1[$s];  }else {    $m = floor(($s+$t)/2);    $tmp_arr = array();    MSort($arr1, $tmp_arr, $s, $m);    MSort($arr1, $tmp_arr, $m+1, $t);    Merge($tmp_arr, $arr2, $s, $m, $t);  }}// 對一位數組$arr[0..n-1]中的元素進行兩路歸并function mergeSort($arr) {  $len = count($arr);  MSort($arr, $arr, 0, $len-1);  return $arr;}

使用經驗
若排序的記錄數目n較小時,可以采用直接插入排序和簡單選擇排序,當記錄本身信息量較大時,用簡單選擇排序方法較好。
若待排序記錄按關鍵字基本有序,適合采用直接插入排序和冒泡排序。
若n值較大時,可以采用快速排序、堆排序和歸并排序。另外快速排序被認為是內部排序方法中最好的方法。

以上就是本文的全部內容,希望對大家的學習有所幫助。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性猛交视频| 欧美精品999| 久久久久一本一区二区青青蜜月| 精品久久久久人成| 国产日韩av高清| 日韩精品高清视频| 欧美日韩性生活视频| 亚洲第一男人av| 日产精品久久久一区二区福利| 精品久久久久久国产91| 一区二区三区国产在线观看| 久久精品国产69国产精品亚洲| 欧美国产日韩精品| 在线观看国产精品日韩av| 国产精品h片在线播放| 久久韩国免费视频| 最近2019年好看中文字幕视频| 欧美日韩亚洲视频| 日本成人黄色片| 亚洲国产中文字幕在线观看| 亚洲精品99久久久久| 精品人伦一区二区三区蜜桃网站| 亚洲精品午夜精品| 狠狠躁夜夜躁人人爽天天天天97| 4438全国亚洲精品在线观看视频| 国产成人在线视频| 欧美成人精品影院| 日韩精品亚洲精品| 国内精品免费午夜毛片| 91精品在线观| 欧美日本高清视频| 97色在线观看免费视频| 高清日韩电视剧大全免费播放在线观看| 91精品久久久久久久久不口人| 97视频在线观看播放| 亚洲成色777777在线观看影院| 亚洲精品久久久久久久久久久久久| 欧美性少妇18aaaa视频| 91av在线网站| 91在线观看免费高清| 亚洲女人被黑人巨大进入| 最新69国产成人精品视频免费| 欧美裸体xxxx极品少妇软件| 在线视频一区二区| 精品丝袜一区二区三区| 亚洲免费电影在线观看| 中文字幕亚洲欧美日韩高清| 亚洲成人av资源网| 久久久999精品视频| 国产日韩欧美视频在线| 91极品女神在线| 亚洲一区二区精品| 91国产美女视频| 久久久亚洲天堂| 日本欧美一二三区| 久久影视电视剧免费网站| 精品久久中文字幕| 日本久久久a级免费| 狠狠爱在线视频一区| 亚洲黄页网在线观看| 欧洲精品毛片网站| 久久99久久99精品免观看粉嫩| 中文字幕亚洲色图| 国产精品最新在线观看| 欧美精品一本久久男人的天堂| 亚洲综合色激情五月| 亚洲精品97久久| 国产视频久久久久| 亚洲一区中文字幕在线观看| 国产精品久久久久久久av大片| 日韩精品视频免费在线观看| 国产精品视频免费在线观看| 久久午夜a级毛片| 亚洲日本中文字幕免费在线不卡| 国产精品青青在线观看爽香蕉| 欧美在线视频导航| 日本精品视频在线| 尤物99国产成人精品视频| 成人两性免费视频| 久久在线视频在线| 亚洲黄色免费三级| 久久久久久尹人网香蕉| 日本午夜在线亚洲.国产| 中文字幕日韩欧美精品在线观看| 欧美人在线观看| 亚洲第一网站男人都懂| 精品亚洲一区二区三区四区五区| 精品国产乱码久久久久久虫虫漫画| 最近2019年日本中文免费字幕| 亚洲丁香久久久| 亚洲第一中文字幕| 亚洲精品一区中文字幕乱码| 国产精品久久久久国产a级| 国内精品久久久久久中文字幕| 8050国产精品久久久久久| 久久久免费精品| 日韩av色在线| 欧美在线视频一二三| 国产精品一二三视频| 色综合亚洲精品激情狠狠| 亚洲在线免费视频| 国产视频一区在线| 日韩av第一页| 中文字幕日韩精品在线观看| 亚洲欧美综合区自拍另类| 最近中文字幕mv在线一区二区三区四区| 欧美激情免费看| 欧美老女人在线视频| 亚洲伊人久久大香线蕉av| 在线观看欧美www| 欧美在线视频一区二区| 亚洲成年人在线| 欧美大片在线看免费观看| 国产成人精品a视频一区www| 精品人伦一区二区三区蜜桃免费| 日韩av不卡在线| 国产成人久久精品| 97视频免费在线看| 日韩精品在线私人| 国产91九色视频| 日日噜噜噜夜夜爽亚洲精品| 亚洲第一区第二区| 国语自产精品视频在线看一大j8| 55夜色66夜色国产精品视频| 国产美女精品视频免费观看| 国产精品极品美女粉嫩高清在线| 欧美成人精品一区二区| 国产日韩精品电影| 色先锋资源久久综合5566| 亚洲视频综合网| 亚洲一区二区黄| 欧美日韩中文字幕在线| 国产精品成熟老女人| 在线视频精品一| 亚洲人成网站777色婷婷| 国产亚洲精品久久久优势| 国产成人一区二区三区电影| 97视频在线观看网址| 在线观看日韩欧美| 久久在线视频在线| 国语自产精品视频在线看| 久久av.com| 久久国产精品影视| 另类天堂视频在线观看| 亚洲欧美激情在线视频| 久久影院免费观看| 欧美日韩亚洲视频一区| 国产午夜精品一区二区三区| 日韩精品在线免费观看视频| 国外成人性视频| 国产成人午夜视频网址| 亚洲最大成人免费视频| 成人激情在线播放| 色999日韩欧美国产| 亚洲久久久久久久久久| 亚洲色图激情小说| 成人网在线免费看| 国产91对白在线播放| 亚洲电影中文字幕| 国产香蕉精品视频一区二区三区| 欧美激情在线狂野欧美精品| 在线精品高清中文字幕| 曰本色欧美视频在线| 成人免费观看a|