python - 如何在没有任何排序功能的情况下按字母顺序对字符串数组进行排序?Python
问题描述
解决以下问题时:“假设您有一个随机的字符串列表(例如:a、b、c、d、e、f、g),请编写一个程序,该程序将按字母顺序对字符串进行排序。您可能不会使用排序命令。”
我遇到了通过以下代码运行字符串的问题,这有时会让我在最终列表中出现重复的字符串
我对 python 还很陌生,我们的班级刚刚开始研究 numpy 和该模块中的函数,我不确定代码中是否使用了任何函数(任何排序函数除外)。
import numpy as np
list=[]
list=str(input("Enter list of string(s): "))
list=list.split()
print() # for format space purposes
listPop=list
min=listPop[0]
newFinalList=[]
if(len(list2)!=1):
while(len(listPop)>=1):
for i in range(len(listPop)):
#setting min=first element of list
min=listPop[0]
if(listPop[i]<=min):
min=listPop[i]
print(min)
listPop.pop(i)
newFinalList.append(min)
print(newFinalList)
else:
print("Only one string inputted, so already alphabatized:",list2)
["a","y","z"] 的预期结果
["a","y","z"]
实际结果...
输入字符串列表:ayz
a a a ['a', 'a', 'a']
输入字符串列表:dec
d c d d ['c', 'd', 'd']
解决方案
您可以实现快速排序:
def partition(arr,low,high):
i = ( low-1 )
pivot = arr[high]
for j in range(low , high):
if arr[j] <= pivot:
i = i+1
arr[i],arr[j] = arr[j],arr[i]
arr[i+1],arr[high] = arr[high],arr[i+1]
return ( i+1 )
def quickSort(arr,low,high):
if low < high:
pi = partition(arr,low,high)
quickSort(arr, low, pi-1)
quickSort(arr, pi+1, high)
arr = ['a', 'x', 'p', 'o', 'm', 'w']
n = len(arr)
quickSort(arr,0,n-1)
print ("Sorted list is:")
for i in range(n):
print ("%s" %arr[i]),
输出:
Sorted array is:
a m o p w x
推荐阅读
- javascript - 使用 setInterval 方法时 MomentJS 不起作用
- swift - 如何从块内部为类变量赋值?
- javascript - 通过 localhost 托管 Firebase 应用程序时无法生成 Fcm 令牌
- reactjs - apollo 客户端缓存更新,但 ui 没有
- javascript - 基于连续扩展的 Angular 2/4 显示图像
- react-native - React Native:如何在 React Native 中设置长期条款和服务条件?
- android - Android Studio xml 中的错误
- tcp - 带有 wirshark 包的 TCP 关闭 2 次握手
- android - Delphi 中的跨平台音频支持
- sql - 使用分组的 SQL 选择