首页 > 编程语言 > 详细

算法入门——排序

时间:2021-05-27 22:20:01      阅读:30      评论:0      收藏:0      [点我收藏+]

算法入门篇(简单的排序算法)

一、简单选择排序

  对一个序列A中的元素A[1]~A[n],令i从1到n枚举,进行n躺操作,每次操作从待排序部分[i,n]中选择最小的元素令其与A[i]进行交换,这样就会形成当前有序区间[1,i],重复操作n趟后,所有元素有序

  核心代码如下:

  for(int i=1;i<=n;i++){

    int k=i;

    for(int j=i;j<=n;j++){

      if(A[j]<A[k]){//找最小元素的过程

        k=j;

      }

    }

    //内层for循环遍历完成A[k]为最小元素

    int temp = A[i];

    A[i]=A[k];

    A[k]=temp;

  }//外层循环结束,则序列有序

 

二、直接插入排序

  对序列A中的n个元素A[1]~A[n],令i从2到n枚举,进行n-1趟操作,每趟操作中序列中[1,i-1]已经有序,而[i,n]无序,那么就在1~i-1,寻找某个位置j,使A[i]插入该位置后前1-i个元素有序,插入时A[j]~A[i-1]后移一位;

  代码如下:

  for(int i=2;i<=n;i++){

    int temp = A[i],j=1;

    while( j>1 && temp <A[j-1]){

      A[j] = A[j-1];

      j--;

    }

    A[j] = temp;

  }

 

三、附C++中sort()函数使用

  头文件:#include <algorithm>

  命名空间调用:using namespace std;

  sort(首元素地址,尾元素地址的下一个地址,比较函数(可不写))

  比较函数cmp实现方式

  cmp(<元素类型> a,<元素类型> b){

    return a>b;//当a大于b时,a就在b之前

  }

  cmp中可加if判断做不同条件的返回,当要从大到小排序时就返回a>b,当要把小的放前面时就用a<b这样就会把小的值放前面

算法入门——排序

原文:https://www.cnblogs.com/zyq79434/p/14819782.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!