欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP排序实现

程序员文章站 2024-02-13 19:02:58
...
 $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  $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  $i; $j--) {
060
            if ($array[$j]  $val) {
105
        $arrKey[] = $key;
106
        $arrVal[] = $val;
107
    }
108
 
109
    $count = count($arrVal);
110
    if ($count) {
111
        //创建key的顺序数组
112
        for ($key = 0; $key  $i; $j--) {
119
                // $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教程有兴趣的朋友有所帮助。