1. 程式人生 > >自定義排序函式

自定義排序函式

方法一

function show($str){
if(count($str)>1){
$k=$str[0];
$x=array();
$y=array();
$_size=count($str);
for($i=1;$i<$_size;$i++){
if($str[$i]<=$k){
$x[]=$str[$i];
            }elseif($str[$i]>$k){
$y[]=$str[$i];
            }
        }
$x=show($x);
$y=show($y);
return array_merge($x,array($k
),$y); }else{ return $str; } } $a=2345283094; $arr=str_split($a,1); $arr1=show($arr); $arr2=implode($arr1); echo $arr2;
方法二:
function myQuickSort(&$arr){
//首先判斷陣列的長度,如果大於1則進行排序
if(count($arr)>1){
//選取陣列中第一個元素作為比較的關鍵字
$key = $arr[0];
$left = array();
$right = array();
$len = count($arr);
$i
=1; $j=$len-1; $bank = $len%2; //如果陣列長度為奇數,則左右陣列的比較次數相等 //如果陣列長度為偶數,則右陣列的比較次數比左陣列多一次 if($bank==1){ //先從陣列的右端開始比較,比較次數為x for($x = 0;$x<($len-1)/2;$x++){ if($arr[$j]<=$key){ $left[] = $arr[$j]; $j--; } else{ $right[] = $arr[$j]; $j--; } //再從陣列的左端比較,比較次數為x if($arr[$i
]>=$key){ $right[] = $arr[$i]; $i++; } else{ $left[] = $arr[$i]; $i++; } } }else{ for($x=0;$x<$len/2;$x++){ //從陣列右端開始比較,比較次數為x if($arr[$j]<=$key){ $left[] = $arr[$j]; $j--; } else{ $right[] = $arr[$j]; $j--; } if($x==(($len/2)-1)){ break; } //從陣列左端比較,比較次數為x-1 if($arr[$i]>=$key){ $right[] = $arr[$i]; $i++; } else{ $left[] = $arr[$i]; $i++; } } } }else{ return $arr; } //巢狀,直到排序完成 $left = myQuickSort($left); $right = myQuickSort($right); //將比較後的數組合並,返回資料 return array_merge($left,array($key),$right); }

相關推薦

Problem D: 指標:呼叫定義排序函式sort,對輸入的n個數進行從小到大輸出。

#include<stdio.h> int sort(int *p,int n) { int i,j,temp; for(i=0;i<n-1;i++) for(j=i;j<n;j++) if(p[i]>p[j]) {

PTA 7-37 模擬EXCEL排序(25 分)sort定義排序函式

7-37 模擬EXCEL排序(25 分)Excel可以對一組紀錄按任意指定列排序。現請編寫程式實現類似功能。輸入格式:輸入的第一行包含兩個正整數N(≤10​5​​) 和C,其中N是紀錄的條數,C是指定排序的列號。之後有 N行,每行包含一條學生紀錄。每條學生紀錄由學號(6位數字

STL定義排序函式 需要注意的問題

1.例子    先舉個例子:分析一下程式的執行結果:看看在三種情況下程式的輸出分別是什麼,有可能出現異常 //////////////////////////////////////////////////// #pragma once #include  #include

c++ stl sort 定義排序函式cmp要遵循 strict weak ordering

   滿足strict weak ordering的運算子能夠表達其他所有的邏輯運算子(logical operator): <(a, b)  : (a < b) <=(a, b): !(b < a) ==(a, b): !(a <

python之定義排序函式sorted()

 sorted()也是一個高階函式,它可以接收一個比較函式來實現自定義排序,比較函式的定義是,傳入兩個待比較的元素 x, y,如果 x 應該排在 y 的前面,返回 -1,如果 x 應該排在 y 的後面,返回 1。如果 x 和 y 相等,返回 0。 def custom_sort(x,y):

定義排序函式

方法一 function show($str){ if(count($str)>1){ $k=$str[0]; $x=array(); $y=array(); $_size=count($str); for($i=1;$i<$_size;$i++){ if($

MySQL定義排序函式FIELD()

MySQL可以通過field()函式自定義排序,格式:field(value,str1,str2,str3,str4),value與str1、str2、str3、str4比較,返回1、2、3、4,如遇到null或者不在列表中的資料則返回0. 這個函式好像Oracle中沒有專

C++中關於set的定義排序函式的書寫

大概有兩個月沒用過C++啦,手都變得很生了,在這裡,在這裡我想扯一下關於set的比較函式的定義,我想,應該有不少人對這個東西感到頭疼吧! 如果說我想在set裡面新增一個自定義的型別,比如說下面的結構體: struct Symbol { char

定義sort函式排序標準

function compareStandard(key){ return function(obj1,obj2){ let val1=obj1[key]; let val2=obj2[key]; if (val1<val2) {

定義Sort函式排序規則

sort()函式預設是升序排序,只能應用於C#指定資料型別,但這裡要和大家分享的是自定義Sort函式排序的物件和規則,方便大家去選擇適合自己專案的排序。 程式碼實現: using System; using System.Collections; using System

c++的sort函式用lamda表示式定義排序

sort函式,可以自定義compare的方法或者過載>來完成自定義排序,而lamda表示式,也可以完成這個功能,測試程式碼如下:#include <iostream> #include <vector> #include <algorith

[C++]LeetCode: 128 Largest Number (定義比較函式排序)

題目: Given a list of non negative integers, arrange them such that they form the largest number. For example, given [3, 30, 34, 5, 9],

java中實現Comparable接口實現定義排序

static -1 return rabl generated args logs ava sca 1 class Student implements Comparable{ 2 String name; 3 int gpa; 4 @Ov

織夢按權重排序定義排序

load ima row idt last 教程 syn 模板文件 而已 【按權重排序】 dede:list 的方法 1、找到"根目錄\include\arc.listview.class.php"文件。 2、修改代碼:在文件第727行處添加按weight排序判斷代碼(紅色

[LeetCode] Custom Sort String 定義排序的字符串

iou sort all out sorted abcd tput example bcd S and T are strings composed of lowercase letters. In S, no letter occurs more than once

Collections定義List排序規則,進行定義排序

cti str targe collect dex pre div spa out //這裏的順序,是我自己定義的一個List<String> String[] regulation = {"諸葛亮","魯班","貂蟬","呂布"}; final List&l

mysql排序的中文首字母排序定義排序

二級 and gbk order by 首字母 order 排序 sql排序 code select * FROM organ_new where city_code = ‘SZ0755‘ and organ_type = ‘H‘ and state =

excel2013如何通過定義排序方式來進行排序

資料 process html 技術 完整 通過 序列 解決辦法 需求 在實際中,我們肯定會有這麽一種需求,即按照自定義的順序來排序。解決辦法就是,我們自定義一個序列給Excel,然後讓Excel按照這個序列來進行排序。如圖 【解決方法,教程視頻資料如下】 本教程視頻資料來

mysql數據庫對字段定義排序的應用

cat mit lan 價格 pid life sans 函數 content 之前做項目 有個需求是 二手租房按照 房租價格 從低到高排序,面議的價格要在最後顯示出來。 因為數據庫中 面議 的價格(price)是(-1,0) 如果按照從低到高,面議的價格就會顯示在最

Arrays.sort()定義排序的實現

port margin tor urn 排列 util int ava 升序 1. Arrays.sort(T[] a)是對數組元素按字典序進行升序排列 import java.util.*; public class Main { public static