排序的几种方法

突然发现有些编程思想遗忘,所以记录回忆一下:

1、冒泡法:

    冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

int a[N]={20,40,-50,7,13};

int temp;

for(int i=0;i<N-1;i++)

{

 for(int j=0;j<N-i;j++)

  {

    if(a[j]>a[j+1])

    {

      temp=a[j];

      a[j]=a[j+1];

      a[j+1]=temp;

      }

    }

}

2、选择法:首先从N个数中找到最小值,放在第1个元素位置上,再从剩下的N-1个数中找出最小值,放在第2个元素位置上,这样不断重复下去,直到剩下最后一个数。

int a[N]={20,40,-50,7,13};

int min,k,temp;

for(int i=0;i<N;i++)

{

     min =a[i];

     k=i;

    for(int j=i+1;j<N;j++)

    {

      if(min>a[j])

    {

      min=a[j];

      k=j;

      }

    }

  a[k]=a[i];a[i]=min;

}

3、插入排序: 每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置(从后向前找到合适位置后),直到全部插入排序完为止

 int a[N]={20,40,-50,7,13};

 int temp;

 for(int i=0;i<N;i++)

{

   temp=a[i];

    for(int j=i;j>0&&temp<a[j-1];j--)

    {

      a[j]=a[j-1];

     }

    a[j]=temp;

   }

}

4、希尔排序的原理:根据需求,如果你想要结果从大到小排列,它会首先将数组进行分组,然后将较大值移到前面,较小值移到后面,最后将整个数组组进行插入排序,这样比起一开始就用插入排序减少了数据交换和移动的次数,可以说希尔排序是加强版的插入排序

  拿数组5, 2, 8, 9, 1, 3,4来说,数组长度为7,当increment为3时,数组分为两个序列5,2,8和9,1,3,4,第一次排序,9和5比较,1和2比较,3和8比较,4和比其下标值小increment的数组值相比较

   此例子是按照从大到小排列,所以大的会排在前面,第一次排序后数组为9, 2, 8,5, 1, 3,4。第一次后increment的值变为3/2=1,此时对数组进行插入排序,实现数组从大到小排序。

   int a[N]={20,40,-50,7,13};

   int temp;

   for(int k=N/2;k>0;k/=2)

   {

     for(int i=k;i<N;i++)

     {

        temp=a[i];

      for(j=i;j>=k;j-=k)

     {

         if(temp>data[j-k];

          {

             a[j]=a[j-l];

            }

        else

        {

           break;

         }

       }

       a[j]=temp;

   } 

}

5、快速排序法

      通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值