排序代码以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语言代码如下:
#includeint 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语言代码:
#includeint 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语言代码:
#include4.计数排序: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]
计数排序比较复杂,言语不好解释。图解更明白。
图解:
创建一个顺序表,表的长度等于需要排序的表的最大值(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)



