栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

算法----四种排序

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

算法----四种排序

排序代码以python及c为例

1.冒泡排序

冒泡排序过程:是将第一元素与后面的元素进行逐个比较,如果后面的元素大于了该元素,这将大于该元素的元素,继续与后面的元素进行比较。

演示给定几个元素:2     3      6     1     0   7   10   8   9 

i 表示需要排序元素    j = i+1 表示与i比较的元素    k 表示比i小的元素

2     3      6     1     0   7   10   8   9

第一轮比较:

  第二轮比较:

 第三轮比较:

 第四轮比较:

    

第五轮比较:

第六轮比较: 

第七轮比较: 

第八轮比较: 

 c语言代码如下:

#include
int main(){//2 3 6 1 0 7 10 8 9
	int a[9]={2,3,6,1,0,7,10,8,9};//定义数组 
	int i,j,k,temp;
	for(i=0;i<8;i++){//i<8进行比较时最后一个值不需要进行比较
	                  //因为后面已经没有值了 
		k=i;//这里把外层的i给了一个中间变量k 
		for(j=i+1;j<9;j++){ //j=i+1比较时从i的下一个开始 j<9直到最后一个值 
			if(a[j]

 python代码:

a=[2,3,6,1,0,7,10,8,9]#定义列表并给定元素
for i in range(len(a)-1):#从0开始循环到列表的长度-1(并且取不到该值)
    j =i
    for k in range(i+1,len(a)):#每次从i的下一个开始比较直到最后一个值结束
        if a[k]
2.选择排序

选择排序思路:是从第一个元素开始,于后面的元素进行比较,如果第一元素大于某个元素,择交换他们的值,并继续向后面比较。

2     3      6     1     0   7   10   8   9

第一次比较:

 第二次比较:

 第三次比较:

 第四次比较:

 

 第五次比较:

 

  第六次比较:

 第七次比较: 

 第八次比较: 

 C语言代码:

#include
int main(){
	int a[9]={2,3,6,1,0,7,10,8,9};//定义数组
	int i,j,temp;//temp中间值 
	for(i=0;i<8;i++){//i=0从第一个开始,i<8最后一个值不用比较 
		for(j=i+1;j<9;j++){//j=i+1从i的下个开始比较,j<9直到最后一个值 
			if(a[i]>a[j]){// 
				temp=a[j];//a[i]的值大于a[j]的值,则交换,并有交换的值继续比较 
				a[j]=a[i];
				a[i]=temp;
			}
		}
	} 
	for(i=0;i<9;i++){//打印排需之后的有序数组 
		printf("%dt",a[i]);
	}
	return 0;
}

python代码:

a=[2,3,6,1,0,7,10,8,9]#定义列表并给定元素
for i in range(len(a)-1):#从0开始循环到列表的长度-1(并且取不到该值)
    for k in range(i+1,len(a)):#每次从i的下一个开始比较直到最后一个值结束
        if a[k]
3.插入排序

插入排序:从第二个之开始,与前面的值进行比较如果小于则交换位置,交换后在用改值于前一个值比较,直到与第一个比较完。

2     3      6     1     0   7   10   8   9

图解:

 

 

 python代码:

a=[2,3,6,1,0,7,10,8,9]#定义列表并给定元素
for i in range(1,len(a)):#len(a)取得到最后一个元素
    for j in range(i,0,-1):#元素与前面的元素进行比较
        if a[j]

C语言代码:

#include
int main(){
	int a[9]={2,3,6,1,0,7,10,8,9};//定义数组
	int i,j,temp;
	for(i=0;i<9;i++){//i=0从第一个开始
	   for(j=i;j>=0;j--){
	      if(a[j]
4.计数排序:

计数排序比较复杂,言语不好解释。图解更明白。

图解:

创建一个顺序表,表的长度等于需要排序的表的最大值(max)减最小值(min)加一:new(length)=max-min+1

并且新表的每个都赋一个初值0;然后取原顺序表的每值减min,然后与new表的下标比较,如果相等这new表的值加1

 然后在遍历这个nwe表,如果值不为0,则将该值的下标加min就等于原来的值,并按顺序将下标加min赋给另一个新的顺序表。

python代码:

s = [2,3,6,1,0,7,10,8,9]
#定义max,min并给定一初始值
max=s[1]
min=s[1]
#用遍历的方式来寻找列表中的max,min
for i in s:
    if max < i:
        max =i
    if min > i:
        min = i
print(max,min)
#计算新列表的长度
len = max - min +1
#创建新列表并给每个一个初始值0
a = list()
for k in range(len):
    a.insert(k,0)
print(a)
#开始计数
for k in s:
    a[k-min] +=1
print(a)
#定义一个变量并给定初始值0,充当另一个新列表的下标
index=0
f = list()
#用新列表来接收
for j in range(len):
    for k in range(a[j]):
        f.insert(index,j+min)
        index +=1
print(f)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/461401.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号