Python不使用sort函数实现数组排序利用数组长度和循环
时间: 2024-04-18 16:29:12 浏览: 168
可以使用数组长度和循环来实现一种简单的排序算法,比如选择排序。选择排序的基本思想是每次从未排序的部分中选择最小(或最大)的元素,放到已排序部分的末尾。
以下是一个使用选择排序算法来排序数组的示例代码:
```python
def selection_sort(arr):
n = len(arr)
# 遍历数组元素
for i in range(n):
# 假设当前元素为最小值的索引
min_index = i
# 在未排序部分中找到最小值的索引
for j in range(i + 1, n):
if arr[j] < arr[min_index]:
min_index = j
# 将最小值与当前元素交换位置
arr[i], arr[min_index] = arr[min_index], arr[i]
# 测试示例
array = [5, 2, 8, 12, 3]
selection_sort(array)
print(array)
```
这段代码使用了选择排序算法,每次遍历找到未排序部分中的最小值,并将其与当前元素交换位置。输出结果为 `[2, 3, 5, 8, 12]`,表示数组已成功排序。这种方法利用了数组长度和循环的特性来实现排序功能。
相关问题
用Python面向对象代码,实现冒泡排序算法,对一个列表进行排序。 输入数组长度n依次输入数组的值, 输出排序后的数组 。不使用内置函数。
在Python中,你可以通过创建一个名为`BubbleSort`的类,来实现冒泡排序算法。下面是一个简单的例子:
```python
class BubbleSort:
def __init__(self, arr):
self.array = arr
def bubble_sort(self):
n = len(self.array)
for i in range(n - 1):
# 提前退出循环的标志
swapped = False
for j in range(0, n - i - 1):
if self.array[j] > self.array[j + 1]:
# 交换元素
self.array[j], self.array[j + 1] = self.array[j + 1], self.array[j]
swapped = True
# 如果一轮比较没有发生交换,说明已经有序,提前结束
if not swapped:
break
return self.array
# 示例用法
input_list = []
n = int(input("请输入数组长度: "))
for _ in range(n):
num = int(input(f"请输入第{i+1}个数: "))
input_list.append(num)
bubble_sorter = BubbleSort(input_list)
sorted_array = bubble_sorter.bubble_sort()
print("排序后的数组: ", sorted_array)
使用选择法排序编写一个能为数组进行升序排序的程序。这三个函数的输入均是一个长度不大于100的无序数组arr,以及数组的长度n,请在函数selectSort中使用选择法对数组元素进行升序排序,函数inArray用于输入数组的n个元素,函数outArray用于输出数组的n个元素。
好的,以下是代码实现:
```python
def inArray(arr, n):
for i in range(n):
arr[i] = int(input())
def outArray(arr, n):
for i in range(n):
print(arr[i], end=' ')
def selectSort(arr, n):
for i in range(n-1):
minIndex = i
for j in range(i+1, n):
if arr[j] < arr[minIndex]:
minIndex = j
arr[i], arr[minIndex] = arr[minIndex], arr[i]
n = int(input())
arr = [0] * n
inArray(arr, n)
selectSort(arr, n)
outArray(arr, n)
```
这段代码实现了输入一个长度为n的无序数组,使用选择法进行升序排序,最后输出排序后的数组。在函数inArray中,我们使用for循环遍历数组的每一个元素,并使用int(input())获取用户输入的整数,将其赋值给对应的数组元素。
在函数selectSort中,我们使用嵌套的for循环实现了选择法排序。外层循环从0到n-2遍历每一个元素,内层循环从i+1到n-1遍历剩下的元素,找到最小的元素并将其与第i个元素交换位置。
最后,在函数outArray中,我们同样使用for循环遍历数组的每一个元素,并使用print语句输出每个元素的值,注意要在参数end中指定空格,以便将所有元素都输出在同一行。
阅读全文