编程给数组排序的方法有很多种,以下是一些常见排序算法的介绍和示例代码:
冒泡排序 (Bubble Sort) 基本思想
:从数组的第一个元素开始,逐个比较相邻元素的大小,如果逆序则交换位置,直到将最大的元素交换到数组末尾。然后重复此过程,每次将待排序部分的最大元素交换到末尾。
示例代码(Python):
```python
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
```
选择排序 (Selection Sort) 基本思想:
从数组中选择最小的元素,与第一个元素交换位置;然后从剩余元素中选择最小的,与第二个元素交换位置;以此类推,直到整个数组有序。
示例代码(Python):
```python
def selection_sort(arr):
n = len(arr)
for i in range(n):
min_idx = i
for j in range(i+1, n):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
```
插入排序 (Insertion Sort) 基本思想:
将数组分为已排序部分和未排序部分,首先将第一个元素作为已排序部分,然后逐个将未排序部分的元素插入到已排序部分的正确位置。
示例代码(Python):
```python
def insertion_sort(arr):
n = len(arr)
for i in range(1, n):
key = arr[i]
j = i-1
while j >= 0 and key < arr[j]:
arr[j+1] = arr[j]
j -= 1
arr[j+1] = key
```
快速排序 (Quick Sort) 基本思想:
选择一个基准元素,通过一趟排序将数组分为两部分,左边部分的元素都小于等于基准元素,右边部分的元素都大于基准元素。然后对左右两个部分递归进行快速排序。
示例代码(Python):
```python
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
```
归并排序 (Merge Sort) 基本思想:
将数组不断地拆分为两个子数组,直到每个子数组只有一个元素,然后逐层合并两个有序子数组,直到合并成一个有序数组。
示例代码(Python):
```python
def merge_sort(arr):
if len(arr) > 1:
mid = len(arr) // 2
left_half = arr[:mid]
right_half = arr[mid:]
merge_sort(left_half)
merge_sort(right_half)
i = j = k = 0
while i < len(left_half) and j < len(right_half):
if left_half[i] < right_half[j]:
arr[k] = left_half[i]
i += 1
else:
arr[k] = right_half[j]
j += 1
k += 1
while i < len(left_half):
arr[k] = left_half[i]
i += 1
k += 1
while j < len(right_half):
arr[k] = right_half[j]
j += 1
k += 1
```
PHP 中的 sort() 函数
功能:
对数组元素进行升序排序,适用于索引数组。
示例代码