探索顺序表的排序算法
发布时间: 2024-04-11 20:28:28 阅读量: 33 订阅数: 25
顺序表查找和排序操作
4星 · 用户满意度95%
# 1. 顺序表结构与特点
顺序表是一种线性表的存储结构,其特点是元素在内存中占据一段连续的存储空间。顺序表的实现可以分为静态顺序表和动态顺序表两种方式。静态顺序表在创建时需要指定固定大小的存储空间,不具备动态扩展的能力;而动态顺序表则可以根据需要动态调整存储空间大小,具有更好的灵活性和扩展性。在实际应用中,需要根据需求综合考虑顺序表的操作效率和存储灵活性,选择合适的实现方式来应对不同的场景和数据规模。
# 2. 基本排序算法
- **2.1 冒泡排序**
冒泡排序是一种简单直观的排序算法,它重复地遍历待排序的元素,比较相邻的两个元素,若顺序错误则交换位置,直至没有元素需要交换。
- *2.1.1 冒泡排序的思想*
冒泡排序的基本思想是通过不断比较相邻的元素,并交换顺序,使得每一轮循环将最大(或最小)的元素移动到最后的位置。
- *2.1.2 冒泡排序的实现*
```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]
return arr
# Example usage
arr = [64, 25, 12, 22, 11]
sorted_arr = bubble_sort(arr)
print("Sorted array:", sorted_arr) # Output: Sorted array: [11, 12, 22, 25, 64]
```
- **2.2 插入排序**
插入排序是一种简单且稳定的排序算法,它将待排序的元素按照大小插入到已排序序列的合适位置中。
- *2.2.1 插入排序的思想*
插入排序的基本思想是将一个元素逐个地插入到已经排序好的数组中,构建最终有序的数组。
- *2.2.2 插入排序的实现*
```python
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
while j >= 0 and key < arr[j]:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
return arr
# Example usage
arr = [12, 11, 13, 5, 6]
sorted_arr = insertion_sort(arr)
print("Sorted array:", sorted_arr) # Output: Sorted array: [5, 6, 11, 12, 13]
```
- **2.3 选择排序**
选择排序是一种简单直观的排序算法,它将待排序序列分为已排序和未排序两部分,在未排序序列中选择最小元素依次放到已排序序列的末尾。
- *2.3.1 选择排序的思想*
选择排序的基本思想是每一轮选择出未排序序列中的最小元素,放到已排序序列的末尾,直至所有元素有序。
- *2.3.2 选择排序的实现*
```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]
return arr
# Example usage
arr = [64, 25, 12, 22, 11]
sorted_arr = selection_sort(arr)
print("Sorted array:", sorted_arr) # Output: Sorted array: [11, 12, 22, 25, 64]
```
# 3. 高级排序算法
#### 3.1 快速排序
快速排序是一种高效的排序算法,也是分治策略的典型应用,其时间复杂
0
0