冒泡排序
排序原理:
- 比较相邻的元素。如果前一个元素比后一个元素打,就交换这两个元素的位置。
- 对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大值。
c语言 //x代表了决定对比的次数,或者代表获取最后一个数字(因为是i+1) for x in range(1,lenth){ for i in range (0,lenth-x){ if L[i]>L[i+1]{ temp = L[i] L[i]=L[i+1] L[i+1]=temp } } } java //决定对比的次数 for(int i=a.length-1;i>0;i--){ for(int j=0;j<i;j++){ if L[j]>L[j+1]{ temp = L[j] L[j]=L[j+1] L[j+1]=temp } }
选择排序
排序原理:
- 每一次遍历的过程中,都规定一个索引处的元素是最小值,和其他索引处的值进行比较,如果当前索引处的值大于其他某个索引处的值,则假定其他某个索引处的值为最小值,最后可以找到最小值在的索引。在所有元素中找到最小的值放到第一个位置,然后在剩下元素中找到最小值放在次小的位置。
- 交换第一个索引处和最小值所在的索引处的值。
c语言
for x in range(0,len(L)){
minimum = L[x]
for i in range (x+1,len(L)){
if L[i] < minimum:
temp = L[i];
L[i] = minimum;
minimum = temp;
L[x] = minimum;
}
}
插入排序
排序原理:
- 把所有的元素分为两组,已经排序的和未排序的。
- 找到未排序的组中的第一个元素,向已经排序的组中进行插入。
- 倒叙遍历已经排序的元素,依次和待插入的元素进行比较,直到找到一个元素小雨等于待插入的元素,那么就把待插入元素放到这个位置,其他的元素向后移动一位。
//对于每个待排序的数字,最大可以到最大索引处,length的最大是8,而最大索引是7
for(int i=1 , i<a.length;i++){
for(int j=i;j>=0;j--){
//比较j索引处的值和比较j-1索引处的值,如果j-1处的值比j索引处的值大则交换数据,如果不大则找到合适的位置退出循环
if A[j-1]>A[j]{
exch(a,i=j-1;j=j)
}
else {
break;
}
}
}
private static void exch(Compareble[] a,int i,int j){
comparable temp;
temp = a[i];
a[i]=a[j];
a[j]=temp;
}