- N +

快速排序算法python代碼,快速排序算法c語言實現

大家好,今天小編來為大家解答以下的問題,關于快速排序算法python代碼,快速排序算法c語言實現這個很多人還不知道,現在讓我們一起來看看吧!

python中怎么對5個列表中的一個數值進行排序

先將列表合并,直接用+號,然后再用sorted排序

python排序代碼怎么寫

Python中有許多不同的排序算法,可以根據需要選擇使用。以下是一些通用排序算法的示例代碼:

1.冒泡排序

```

defbubbleSort(arr):

n=len(arr)

foriinrange(n):

forjinrange(0,n-i-1):

ifarr[j]>arr[j+1]:

arr[j],arr[j+1]=arr[j+1],arr[j]

returnarr

```

2.選擇排序

```

defselectionSort(arr):

n=len(arr)

foriinrange(n):

min_idx=i

forjinrange(i+1,n):

ifarr[min_idx]>arr[j]:

min_idx=j

arr[i],arr[min_idx]=arr[min_idx],arr[i]

returnarr

```

3.插入排序

```

definsertionSort(arr):

foriinrange(1,len(arr)):

key=arr[i]

j=i-1

whilej>=0andkey<arr[j]:

arr[j+1]=arr[j]

j-=1

arr[j+1]=key

returnarr

```

4.快速排序

```

defquickSort(arr):

iflen(arr)<=1:

returnarr

pivot=arr[len(arr)//2]

left=[xforxinarrifx<pivot]

middle=[xforxinarrifx==pivot]

right=[xforxinarrifx>pivot]

returnquickSort(left)+middle+quickSort(right)

```

這里只展示了一些基本排序算法的代碼示例,還有其他更高效的排序算法可供選擇,如歸并排序和堆排序等。在實際使用中,需要根據數據量和要求選擇最合適的算法。

sort函數排序用法

sort函數是一種常用的排序函數,可以對列表或數組進行排序。在大多數編程語言中,sort函數都是按照升序(從小到大)的順序對元素進行排序。

使用sort函數的一般用法是:

1.選擇要排序的列表或數組。

2.調用sort函數,傳入要排序的列表或數組作為參數。

示例代碼(Python):

```

numbers=[5,2,9,1,3]

numbers.sort()

print(numbers)#輸出:[1,2,3,5,9]

```

示例代碼(JavaScript):

```

letnumbers=[5,2,9,1,3];

numbers.sort();

console.log(numbers);//輸出:[1,2,3,5,9]

```

需要注意的是,sort函數會直接修改原始列表或數組,而不會創建一個新的排序后的副本。如果需要保留原始列表或數組,可以先創建一個副本進行排序。

另外,sort函數還可以接受一個可選的比較函數作為參數,用于指定自定義的排序規則。比較函數可以根據需要來定義排序的邏輯,例如按照降序排序或按照特定的屬性進行排序。具體使用方法可以根據編程語言的文檔進行查閱。

python中字符怎么比較大小排序

字符串按位比較,兩個字符串第一位字符的ascii碼誰大,字符串就大,不再比較后面的;第一個字符相同就比第二個字符串,以此類推,需要注意的是空格的ascii碼是32,空(null)的ascii碼是0,比如:s1='abc',s2='abc',則s2>s1。

在Python中如何使用sorted()函數排序

Pythonlist內置sort()方法用來排序,也可以用p全局sorted()方法來對可迭代的序列排序生成新的序列,也可以使用operator模塊。下面將詳細說明:

1)排序基礎

簡單的升序排序是非常容易的。只需要調用sorted()方法。它返回一個新的list,新的list的元素基于小于運算符(__lt__)來排序。

>>>sorted([5,2,3,1,4])

[1,2,3,4,5]

也可以使用list.sort()方法來排序,此時list本身將被修改。通常此方法不如sorted()方便,但是如果你不需要保留原來的list,此方法將更有效。

>>>a=[5,2,3,1,4]

>>>a.sort()

>>>a

[1,2,3,4,5]

另一個不同就是list.sort()方法僅被定義在list中,相反地sorted()方法對所有的可迭代序列都有效。

sorted({1:'D',2:'B',3:'B',4:'E',5:'A'})

[1,2,3,4,5]

2)key參數/函數

從python2.4開始,list.sort()和sorted()函數增加了key參數來指定一個函數,此函數將在每個元素比較前被調用。例如通過key指定的函數來忽略字符串的大小寫:

>>>sorted("ThisisateststringfromAndrew".split(),key=str.lower)

['a','Andrew','from','is','string','test','This']

key參數的值為一個函數,此函數只有一個參數且返回一個值用來進行比較。這個技術是快速的因為key指定的函數將準確地對每個元素調用。

更廣泛的使用情況是用復雜對象的某些值來對復雜對象的序列排序,例如:

>>>student_tuples=[

('john','A',15),

('jane','B',12),

('dave','B',10),

]

>>>sorted(student_tuples,key=lambdastudent:student[2])#sortbyage

[('dave','B',10),('jane','B',12),('john','A',15)]

同樣的技術對擁有命名屬性的復雜對象也適用,例如:

>>>classStudent:

def__init__(self,name,grade,age):

self.name=name

self.grade=grade

self.age=age

def__repr__(self):

returnrepr((self.name,self.grade,self.age))

>>>student_objects=[

Student('john','A',15),

Student('jane','B',12),

Student('dave','B',10),

]

>>>sorted(student_objects,key=lambdastudent:student.age)#sortbyage

[('dave','B',10),('jane','B',12),('john','A',15)]

3)升序和降序

list.sort()和sorted()都接受一個參數reverse(TrueorFalse)來表示升序或降序排序。例如對上面的student降序排序如下:

>>>sorted(student_tuples,key=itemgetter(2),reverse=True)

[('john','A',15),('jane','B',12),('dave','B',10)]

>>>sorted(student_objects,key=attrgetter('age'),reverse=True)

[('john','A',15),('jane','B',12),('dave','B',10)]

4)排序的穩定性和復雜排序

從python2.2開始,排序被保證為穩定的。意思是說多個元素如果有相同的key,則排序前后他們的先后順序不變。

>>>data=[('red',1),('blue',1),('red',2),('blue',2)]

>>>sorted(data,key=itemgetter(0))

[('blue',1),('blue',2),('red',1),('red',2)]

注意在排序后'blue'的順序被保持了,即'blue',1在'blue',2的前面。

更復雜地你可以構建多個步驟來進行更復雜的排序,例如對student數據先以grade降序排列,然后再以age升序排列。

>>>s=sorted(student_objects,key=attrgetter('age'))#sortonsecondarykey

>>>sorted(s,key=attrgetter('grade'),reverse=True)#nowsortonprimarykey,descending

[('dave','B',10),('jane','B',12),('john','A',15)]

另外,Operator模塊函數

上面的key參數的使用非常廣泛,因此python提供了一些方便的函數來使得訪問方法更加容易和快速。operator模塊有itemgetter,attrgetter,從2.6開始還增加了methodcaller方法。使用這些方法,上面的操作將變得更加簡潔和快速:

>>>fromoperatorimportitemgetter,attrgetter

>>>sorted(student_tuples,key=itemgetter(2))

[('dave','B',10),('jane','B',12),('john','A',15)]

>>>sorted(student_objects,key=attrgetter('age'))

[('dave','B',10),('jane','B',12),('john','A',15)]

operator模塊還允許多級的排序,例如,先以grade,然后再以age來排序:

>>>sorted(student_tuples,key=itemgetter(1,2))

[('john','A',15),('dave','B',10),('jane','B',12)]

>>>sorted(student_objects,key=attrgetter('grade','age'))

[('john','A',15),('dave','B',10),('jane','B',12)]

好了,關于快速排序算法python代碼和快速排序算法c語言實現的問題到這里結束啦,希望可以解決您的問題哈!

返回列表
上一篇:
下一篇: