python怎么给整数数组排序
时间: 2024-01-10 21:45:40 浏览: 48
Python中可以使用内置函数`sorted()`或者列表对象的方法`sort()`来对整数数组进行排序。
使用`sorted()`函数:
```python
a = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
b = sorted(a)
print(b) # 输出 [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
```
使用`sort()`方法:
```python
a = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
a.sort()
print(a) # 输出 [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
```
需要注意的是,`sort()`方法是对原数组进行排序,而`sorted()`函数返回一个排序后的新数组。另外,这两种方法都是默认进行升序排序,如果需要进行降序排序,可以使用`reverse=True`参数。
相关问题
python 给定一个未排序的整数数组,找出数字连续的最长序列
思路:
1. 先将数组排序。
2. 遍历排序后的数组,记录当前连续序列的起始和终止位置。
3. 如果当前数字与前一个数字连续,则更新终止位置。
4. 如果当前数字与前一个数字不连续,则更新起始位置。
5. 每遍历一个数字,都更新最长连续序列的长度和起始位置。
代码实现:
```python
def longestConsecutive(nums):
if not nums:
return 0
nums.sort()
start = end = res = 1
for i in range(1, len(nums)):
if nums[i] == nums[i-1]+1:
end += 1
elif nums[i] == nums[i-1]:
continue
else:
res = max(res, end-start+1)
start = end = i
return max(res, end-start+1)
```
测试:
```
>>> nums = [100, 4, 200, 1, 3, 2]
>>> longestConsecutive(nums)
4
```
时间复杂度:排序的时间复杂度为$O(nlogn)$,遍历一次数组的时间复杂度为$O(n)$,因此总时间复杂度为$O(nlogn)$。
python 给定一个未排序的整数数组,找出数字连续的最长序列并且打印出列表
以下是一个可能的解决方案:
```python
def longestConsecutive(nums):
if not nums:
return []
nums_set = set(nums)
max_len = 0
start = None
for num in nums:
if num - 1 not in nums_set:
curr_len = 1
curr_start = num
while curr_start + 1 in nums_set:
curr_len += 1
curr_start += 1
if curr_len > max_len:
max_len = curr_len
start = num
return list(range(start, start + max_len))
# 示例用法
nums = [100, 4, 200, 1, 3, 2]
print(longestConsecutive(nums)) # 输出 [1, 2, 3, 4]
```
该函数的时间复杂度为 $O(n)$,其中 $n$ 是输入数组的长度。它首先将数组转换为一个集合,以便更快地检查某个数字是否存在。然后,它遍历数组中的每个数字,如果该数字是一个连续序列的起点,则尝试向后查找更长的连续序列,并跟踪最长的序列的长度和起始数字。最后,它返回从起始数字开始的最长连续整数序列。如果输入数组为空,则返回一个空列表。
阅读全文