冒泡排序数据结构代码
时间: 2023-11-19 13:56:10 浏览: 40
以下是冒泡排序的Python代码:
```python
def bubble_sort(arr):
n = len(arr)
for i in range(n):
# 标记是否有交换
swapped = False
for j in range(n - i - 1):
# 如果相邻两个元素逆序,则交换它们
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
swapped = True
# 如果一趟下来没有需要交换的,则停止
if not swapped:
break
return arr
```
以上代码中,`arr`是待排序的数组,`n`是数组的长度。在每一趟排序中,从第一个元素开始,依次比较相邻的两个元素,如果它们逆序,则交换它们。如果一趟下来没有需要交换的元素,则说明数组已经有序,排序结束。
相关问题
双向冒泡排序数据结构
双向冒泡排序是一种改进的冒泡排序算法,它在每一轮的比较中同时从左到右和从右到左进行比较和交换。这样可以减少排序的轮数,提高排序的效率。
以下是双向冒泡排序的示例代码:
```python
def bidirectional_bubble_sort(arr):
n = len(arr)
left = 0
right = n - 1
while left < right:
# 从左到右进行比较和交换
for i in range(left, right):
if arr[i] > arr[i + 1]:
arr[i], arr[i + 1] = arr[i + 1], arr[i]
right -= 1
# 从右到左进行比较和交换
for i in range(right, left, -1):
if arr[i] < arr[i - 1]:
arr[i], arr[i - 1] = arr[i - 1], arr[i]
left += 1
# 示例数据
arr = [5, 3, 8, 4, 2]
bidirectional_bubble_sort(arr)
print(arr) # 输出:[2, 3, 4, 5, 8]
```
在这个示例中,我们定义了一个`bidirectional_bubble_sort`函数来实现双向冒泡排序。函数接受一个列表作为输入,并通过左右两个指针来控制排序的范围。在每一轮的比较中,我们先从左到右进行比较和交换,然后从右到左进行比较和交换。通过不断缩小排序范围,直到左指针大于等于右指针,完成排序。
数据结构冒泡排序算法的代码
好的,以下是冒泡排序算法的代码(C++实现):
```
void bubbleSort(int arr[], int n){
for (int i = 0; i < n - 1; i++){
for (int j = 0; j < n - i - 1; j++){
if (arr[j] > arr[j + 1]){
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
```
其中,`arr`是待排序的数组,`n`是数组的长度。外层循环控制排序的轮数,内层循环控制每一轮比较的次数。如果相邻两个元素的顺序不正确,就交换它们的位置,直到一轮比较结束。重复进行多轮比较,直到整个数组都有序。