《算法笔记》学习 排序

目前学习到了三种基础的排序方法,分别为冒泡排序,选择排序,插入排序。以下为这三排序方法的整理。

一.冒泡排序

冒泡排序是相邻两个数之间进行比较,大的数(或者小的 看题目要求)靠后,就像气泡一样,两个泡泡大的沉下去,小的浮起来。每次完成一个大排之后,最大的一个数就会移至末尾(因为在比较中它始终处于最大)。所以对于这种排序方法,应该考虑双重循环,第一层循环就是判断像这样的“大排”一共有几次,对于n个数而言,“大排”应该有n-1次。第二层循环,则是相邻数两两比较大小,交换次序,而且因为“大排”的原因,每完成一次“大排”,末尾的数就固定了,无需考虑进第二次循环。相应进行n-i-1次循环(i是大排次数)。

int arr[10]={1,3,6,8,7,9,2,4,0,5}
for(int i=0;i<9;i++){
    for(int j=0;j<9-i;j++){
        if arr[j]>arr[j+1]{
            t=arr[j];
            arr[j]=arr[j+1];
            arr[j+1]=t;
            }
        }
    }

二.选择排序

冒泡排序是先排序好大数,那么选择排序就是先将小数排列好。选择排序就是将第一个数与后面所有数相比较,如果后面的数中有比它小的数,同时这个数还是后面这些数中最小的,那么将第一个数和这个小数交换位置,因此确定好了最小的数的位置。一样是双重循环,第一重与冒泡一致,第二重循环和冒泡相反,以下为代码。

int arr[6]={1,3,6,4,2,7};
for(int i=0;i<5;i++){
    for(int j=i+1;j<6;j++){
        if(arr[j]<arr[i]){
            t=arr[i];
            arr[i]=arr[j];
            arr[j]=t;
            }
        }
    }

三.插入排序

插入排序是将待插入元素一个个插入初始已有序部分中的过程,插入的位置遵循了始终保持有序的规则,从后往前枚举已有序部分来确定插入位置。双重循环,第一重仍然考虑大体次数,因为最初的第一个元素不参与和前面交换(因为没有),所以第一重循环n-1次。

for(int i=1;i<n;i++){
    int temp=arr[i],j=i;
    while(j>1&&temp<arr[j-1]){
        arr[j]=arr[j-1];
        j--;
      }
    arr[j]=temp;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值