快排C++
#include <iostream>
int subSort(int num[],int l,int r){
int X=num[l];
int i=l;
int j=r;
while(i<j){
while(num[j]>=X&&i<j) j--;
if (num[j]<X){//找到一个比X小的,则从右边找停止,开始从左边找
num[i]=num[j];//这里并没与覆盖,因为第一个值作为中值使用了
i++;
}
while(num[i]<=X&&i<j) i++;
if(num[i]>X){//找到一个比X大的,则从左边找停止,开始从右边找
num[j]=num[i];
j--;
}
}
num[i]=X;//中心元素
return i;
}
void quick_sort(int s[], int l, int r)
{
if (l < r)
{
int i = subSort(s, l, r);//先成挖坑填数法调整s[]
quick_sort(s, l, i - 1); // 递归调用
quick_sort(s, i + 1, r);
}
}
int main() {
int data[]={72,34,56,90,20,68,10,40};
int i;
quick_sort(data,0,7);
for(i;i<=7;i++){
cout<<data[i]<<endl;
}
}
快排python
def sortsub(s,l,r):
x=s[l] #这里我们选择左首作为排序中值
i=l
j=r
while(i<j):
while((x<=s[j])&(i<j)): j-=1#左首中值,那么我们先从右手开始找,因为此时左手有空位
if (x>s[j]):
s[i]=s[j]
i+=1
while((x>=s[i])&(i<j)): i+=1
if (x<s[i]):
s[j]=s[l]
j-=1
s[i]=x
return i,s
def FindSort(s,l,r):
if (l<r):
i,s = sortsub(s, l, r)
FindSort(s,l,i-1)
FindSort(s,i+1,r)
return s
s=[1,6,3,6,2,8,9,10]#如果有相同的值也是
s=FindSort(s,0,6)
print(s)
冒泡python
def sort(num):
for i in range(len(num)-1):#len(num)-1
for j in range(len(num)-i-1):
if num[j]<num[j+1]:#更改符号>变为从小到大
t=num[j]
num[j]=num[j+1]
num[j+1]=t
return num
print(sort([4,6,7,5,1,2]))
print(sort([3,9,2,1,0,7,2,6]))
选择排序python
def sort(num):
for i in range(len(num)):
Min=num[i]
local=i
for j in range(i+1,len(num)):
if Min>num[j]:
Min=num[j]
local=j
if local!=i:
t=num[i]
num[i]=num[local]
num[local]=t
return num
print(sort([4,6,7,5,1,2]))