PHP排序實現
<?php 002 /** 003 * 插入排序(一维数组) 004 * 每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当的位置,使数列依然有序;直到待排序的数据元素全部插入完成为止。 005 */ 006 function insertSort($arr) { 007 if (!is_array($arr) || count($arr) == 0) { 008 return $arr; 009 } 010 $count = count($arr); 011 for ($i = 1; $i < $count; $i++) { 012 if (isset($arr[$i])) { 013 $tmp = $arr[$i]; //获取后一个元素的值 014 $j = $i - 1; //获取前面的下标 015 while ($arr[$j] > $tmp) { //如果前面一个比后面一个大, 这里是从小到大 016 $arr[$j + 1] = $arr[$j]; //把小的元素和前面的对换,直到移动到合适的位置,在移动下一个 017 $arr[$j] = $tmp; 018 $j--; 019 } 020 } 021 } 022 return $arr; 023 } 024 025 /** 026 * 选择排序(一维数组) 027 * 每一趟从待排序的数据元素中选出最小(最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 028 */ 029 function selectSort($arr) { 030 if (!is_array($arr) || count($arr) == 0) { 031 return $arr; 032 } 033 $count = count($arr); 034 for ($i = 0; $i < $count; $i++) { 035 $k = $i; 036 for ($j = $i + 1; $j < $count; $j++) { 037 if ($arr[$k] > $arr[$j]) 038 $k = $j; //找出最小的 039 if ($k != $i) { 040 $tmp = $arr[$i]; 041 $arr[$i] = $arr[$k]; 042 $arr[$k] = $tmp; 043 } 044 } 045 } 046 return $arr; 047 } 048 049 /** 050 * 冒泡排序(一维数组) 051 * 两两比较待排序数据元素的大小,发现两个数据元素的次序相反即进行交换,直到没有反序的数据元素为止 052 */ 053 function bubbleSort($array) { 054 $count = count($array); 055 if ($count <= 0) { 056 return false; 057 } 058 for ($i = 0; $i < $count; $i++) { 059 for ($j = $count - 1; $j > $i; $j--) { 060 if ($array[$j] < $array[$j - 1]) { //比较找到的数进行交换 061 $tmp = $array[$j]; 062 $array[$j] = $array[$j - 1]; 063 $array[$j - 1] = $tmp; 064 } 065 } 066 } 067 return $array; 068 } 069 070 /** 071 * 快速排序(一维数组) 072 */ 073 function quickSort($array) { 074 if (count($array) <= 1) { 075 return $array; 076 } 077 $key = $array[0]; 078 $left_arr = array(); 079 $right_arr = array(); 080 for ($i = 1; $i < count($array); $i++) { 081 if ($array[$i] <= $key) { 082 $left_arr[] = $array[$i]; 083 } else { 084 $right_arr[] = $array[$i]; 085 } 086 } 087 $left_arr = quickSort($left_arr); 088 $right_arr = quickSort($right_arr); 089 return array_merge($left_arr, array( 090 $key 091 ), $right_arr); 092 } 093 094 /** 095 * 按照元素的值进行排序 096 * strOrder 为排列的顺序 asc 升序 desc 降序 097 */ 098 function sortByVal($arr, $strOrder = 'asc') { 099 if (!is_array($arr) || count($arr) == 0) { 100 return $arr; 101 } 102 103 $arrReturn = array(); 104 foreach ($arr as $key => $val) { 105 $arrKey[] = $key; 106 $arrVal[] = $val; 107 } 108 109 $count = count($arrVal); 110 if ($count) { 111 //创建key的顺序数组 112 for ($key = 0; $key < $count; $key++) { 113 $arrKeyMap[$key] = $key; 114 } 115 //对值进行排序 116 for ($i = 0; $i < $count; $i++) { 117 118 for ($j = $count - 1; $j > $i; $j--) { 119 //<从小到大排列 升降在这修改 120 $bol = $strOrder == 'asc' ? $arrVal[$j] < $arrVal[$j - 1] : $arrVal[$j] > $arrVal[$j - 1]; 121 if ($bol) { 122 $tmp = $arrVal[$j]; 123 $arrVal[$j] = $arrVal[$j - 1]; 124 $arrVal[$j - 1] = $tmp; 125 //值的冒泡排序,引起key的数组的交互 126 $keytmp = $arrKeyMap[$j]; 127 $arrKeyMap[$j] = $arrKeyMap[$j - 1]; 128 $arrKeyMap[$j - 1] = $keytmp; 129 } 130 } 131 } 132 if (count($arrKeyMap)) { 133 foreach ($arrKeyMap as $val) { 134 $arrReturn[] = $arrKey[$val]; 135 } 136 } 137 return $arrReturn; 138 } 139 } 140 141 /** 142 * 使用原生的函数进行数组按照值进行排列 143 */ 144 function arraySortByVal($arr, $keys, $type = 'asc') { 145 $keysvalue = $new_array = array(); 146 foreach ($arr as $k => $v) { 147 $keysvalue[$k] = $v[$keys]; 148 } 149 if ($type == 'asc') { 150 asort($keysvalue); 151 } else { 152 arsort($keysvalue); 153 } 154 reset($keysvalue); 155 foreach ($keysvalue as $k => $v) { 156 $new_array[$k] = $arr[$k]; 157 } 158 return $new_array; 159 }
j
以上就介紹了PHP排序實現,包含了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

C語言return的用法有:1、對於傳回值類型為void的函數,可以使用return語句來提前結束函數的執行;2、對於傳回值型別不為void的函數,return語句的作用是將函數的執行結果傳回給呼叫者;3、提前結束函數的執行,在函數內部,我們可以使用return語句來提前結束函數的執行,即使函數並沒有回傳值。

Count函數用於計算指定範圍內數字的個數。它忽略文字、邏輯值和空值,但會將空白儲存格計算在內,Count函數只計算包含實際數字的儲存格數量。而CountA函數用於計算指定範圍內非空單元格的個數。它不僅計算包含實際數字的儲存格,還計算包含文字、邏輯值和公式等非空白儲存格的數量。

原始碼:publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}#輸出上述程式碼的輸出可以簡單地得出結論:return在finally之前執行,我們來看下字節碼層面上發生了什麼事情。下面截取case1方法的部分字節碼,並且對照源碼,將每個指令的含義註釋在

標題:C#中使用Array.Sort函數對陣列進行排序的範例正文:在C#中,陣列是一種常用的資料結構,經常需要對陣列進行排序運算。 C#提供了Array類,其中有Sort方法可以方便地對陣列進行排序。本文將示範如何使用C#中的Array.Sort函數對陣列進行排序,並提供具體的程式碼範例。首先,我們要先了解Array.Sort函數的基本用法。 Array.So

在PHP中,有許多強大的陣列函數可以讓陣列的操作更加方便和快速。當我們需要將兩個陣列拼成一個關聯數組時,可以使用PHP的array_combine函數來實現這一操作。這個函數其實是用來將一個陣列的鍵當作另一個陣列的值,合併成一個新的關聯數組。接下來,我們將會講解如何使用PHP中的array_combine函數將兩個陣列拼成關聯數組。了解array_comb

在進行PHP編程時,我們常常需要將數組合併。 PHP提供了array_merge()函數來完成數組合併的工作,但是當數組中存在相同的鍵時,函數會覆寫原來的值。為了解決這個問題,PHP在語言中還提供了一個array_merge_recursive()函數,該函數可以合併數組並保留相同鍵的值,使得程式的設計變得更加靈活。 array_merge

Vue3.2setup語法糖是在單文件組件(SFC)中使用組合式API的編譯時語法糖解決Vue3.0中setup需要繁瑣將聲明的變量、函數以及import引入的內容通過return向外暴露,才能在使用的問題1.在使用中無需return宣告的變數、函數以及import引入的內容,即可在使用語法糖//import引入的內容import{getToday}from'./utils'//變數constmsg='Hello !'//函數func

JavaScript中return的用法,需要具體程式碼範例在JavaScript中,return語句用來指定從函數傳回的值。它不僅可以用於結束函數的執行,還可以將一個值傳回給呼叫函數的地方。 return語句有以下幾個常見的用法:傳回一個值return語句可以用來傳回一個值給呼叫函數的地方。下面是一個簡單的範例:functionadd(a,b){
