简单的排序

简单的选择排序

要点:在数组中每扫描一遍都选出一个最小值依次和前面的值交换

第一次交换第一个,第二次交换第二个,以此类推。

void selectSort(int *arr){
          int i=0,begin=0,end=0,minPosition=0;
          for(i=0; i<length-1; i++){//最后一趟都不用比length-1
                      begin = i;
                      end = length;
                      minPosition = findMin(arr,begin ,end);//使用打擂台法查最小值
                      swap(&arr[i],&arr[minPosition]);//交换位置
          }
}
//打擂台法查最小值
int findMin(int *arr, int  begin, intend){
          int min =  *(arr+begin);
          for(++begin;begin<end;begin++){
                         if(*(arr+begin)<min){
                          min = *(arr+begin);
                    }
          }
         return min;
}


图解如下:黄色背景为选出的最小值,绿色背景为有序序列


简单的冒泡排序

要点:每趟交换出一个最大的在最后

for(int i=0; i<length-1; i++){//总趟数是  长度-1
    for(int j=0; j<length-i-1; j++){//每一趟的比较的次数是   当前趟剩余元素-1
        if(arr[j]>arr[j+1]){
            tmp = arr[j];
            arr[j] = arr[j+1];
            arr[j+1]= tmp;
        }
    }
}

图解如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值