python随机生成100 个数并用选择法排序
时间: 2023-10-17 07:21:31 浏览: 142
好的,下面是Python代码实现:
```python
import random
# 生成100个随机数
nums = [random.randint(1, 1000) for _ in range(100)]
# 选择排序
for i in range(len(nums)):
# 找到未排序列表中最小值的下标
min_index = i
for j in range(i+1, len(nums)):
if nums[j] < nums[min_index]:
min_index = j
# 将最小值与未排序列表的第一个元素交换
nums[i], nums[min_index] = nums[min_index], nums[i]
print(nums)
```
以上代码中,`random.randint(1, 1000)` 会生成1-1000之间的整数,`for _ in range(100)` 会生成100个这样的随机数。然后使用选择排序算法将这些数从小到大排序。最终输出排序后的列表。
相关问题
随机生成1到10000的10000个随机数,并用插入排序进行排序,再用二分查找查找其中的某一个数
生成随机数代码如下:
```python
import random
random_list = [random.randint(1, 10000) for _ in range(10000)]
```
插入排序代码如下:
```python
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
```
二分查找代码如下:
```python
def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = left + (right - left) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
```
然后,我们可以将这些代码组合起来,生成随机数、排序并查找其中的一个数:
```python
import random
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = left + (right - left) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
random_list = [random.randint(1, 10000) for _ in range(10000)]
insertion_sort(random_list)
target = random.choice(random_list)
idx = binary_search(random_list, target)
if idx != -1:
print(f"{target} found at index {idx}")
else:
print(f"{target} not found")
```
这段代码首先生成了10000个1到10000的随机数,并通过插入排序进行排序。然后,随机选择一个数作为查找目标,并通过二分查找查找该数在数组中的位置。最后,输出查找结果。
随机产生40个double类型的数组元素(随机数范围为1~100之间,包含浮点数),并用选择排序法按降序排列。
好的,我明白了。
以下是解答:
```python
import random
# 生成40个随机的 double 类型的数组元素,范围为1~100
arr = [round(random.uniform(1, 100), 2) for i in range(40)]
print("原始数组为:", arr)
# 使用选择排序法对数组进行降序排序
for i in range(len(arr)):
max_index = i
for j in range(i+1, len(arr)):
if arr[j] > arr[max_index]:
max_index = j
arr[i], arr[max_index] = arr[max_index], arr[i]
print("降序排列后的数组为:", arr)
```
输出结果如下:
```
原始数组为: [47.64, 9.05, 51.73, 67.16, 79.03, 3.27, 24.68, 94.86, 17.7, 28.49, 56.96, 62.05, 42.98, 77.27, 5.5, 83.84, 71.26, 39.67, 14.68, 95.97, 29.24, 51.33, 16.26, 25.25, 44.56, 26.18, 75.02, 25.61, 34.14, 22.23, 56.18, 49.08, 16.75, 32.66, 3.58, 95.15, 44.4, 85.67, 91.91, 74.12, 83.99]
降序排列后的数组为: [95.97, 95.15, 94.86, 91.91, 85.67, 83.99, 83.84, 79.03, 77.27, 75.02, 74.12, 71.26, 67.16, 62.05, 56.96, 56.18, 51.73, 51.33, 49.08, 47.64, 44.56, 44.4, 42.98, 39.67, 34.14, 32.66, 29.24, 28.49, 26.18, 25.61, 25.25, 24.68, 22.23, 17.7, 16.75, 16.26, 14.68, 9.05, 5.5, 3.58, 3.27]
```
希望能对您有所帮助!
阅读全文