数据结构与算法之经典排序算法

冒泡排序

排序原理:

  1. 比较相邻的元素。如果前一个元素比后一个元素打,就交换这两个元素的位置。
  2. 对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大值。
    在这里插入图片描述
    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
    	}
    }
    

选择排序

排序原理:

  1. 每一次遍历的过程中,都规定一个索引处的元素是最小值,和其他索引处的值进行比较,如果当前索引处的值大于其他某个索引处的值,则假定其他某个索引处的值为最小值,最后可以找到最小值在的索引。在所有元素中找到最小的值放到第一个位置,然后在剩下元素中找到最小值放在次小的位置。
  2. 交换第一个索引处和最小值所在的索引处的值。
    在这里插入图片描述
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;
	}
}

插入排序

排序原理:

  1. 把所有的元素分为两组,已经排序的和未排序的。
  2. 找到未排序的组中的第一个元素,向已经排序的组中进行插入。
  3. 倒叙遍历已经排序的元素,依次和待插入的元素进行比较,直到找到一个元素小雨等于待插入的元素,那么就把待插入元素放到这个位置,其他的元素向后移动一位。
    在这里插入图片描述
//对于每个待排序的数字,最大可以到最大索引处,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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值