美文网首页
给自己备份的排序代码

给自己备份的排序代码

作者: 悟剑声 | 来源:发表于2016-08-10 11:43 被阅读16次

交换排序

  • 冒泡排序
void maopao(int * a,int n){
    int i,j,temp;
    for(i = 0; i < n-1; i++){
        for(j = i+1;j < n; j++){
             if(a[i]>a[j]){
                 temp = a[i];
                 a[i] = a[j];
                 a[j] = temp;
             }
        }
    }
}
冒泡排序效果.gif(网络)
  • 快速排序
void kuaisuin(int * a,int start,int end){
    int m=start,n=end,k = a[(start+end)/2];
    int temp;
    do{
         while( m<end && a[m]<k){
            m++;
         }
         while(n>start && a[n]>k){
            n--;
         }
         if(m <= n){
            temp = a[m];
            a[m] = a[n];
            a[n] = temp;
            m++;
            n--;
         }
    }while(m <= n);
    if(m < end){
        kuaisuin(a,m,end);
    }
    if(n > start){
        kuaisuin(a,start,n);
    }
}
快速排序效果.gif(网络)

插入排序

  • 直接插入排序
void charu(int * a,int n){
    int i,j,temp;
    for(i = 1; i< n; i++){
        temp = a[i];
        for(j = i-1;j >= 0 && a[j] > temp; j--){
            a[j+1] = a[j];
        }
        a[j+1] = temp;
    }
}
  • 希尔排序
void shell(int *a,int n) {
    int i,j,k,x;
    k=n/2; /*间距值*/
    while(k>=1) {
        for(i = k; i < n; i++) {
            x = a[i];
            j = i-k;
            while(j>=0 && x<a[j]) {
                a[j+k] = a[j];
                j -= k;
            }
            a[j+k] = x;
        }
        k /= 2; /*缩小间距值*/
    }
}
Shell排序效果.gif(网络)

选择排序

  • 简单选择排序
void xuanze(int * a,int n){
    int i,j,temp,k;
    for(i = 0; i < n-1; i++){
        k = i;
        for(j = i+1;j < n; j++){
             if(a[k]>a[j]){
                 k = j;
             }
        }
        if(k != i){
            temp = a[i];
            a[i] = a[k];
            a[k] = temp;
        }
    }
}
  • 堆排序
void HeapAdjust(int H[],int s, int length)
{
    int tmp  = H[s];
    int child = 2*s+1; 
    while (child < length) {
        if(child+1 <length && H[child]<H[child+1]) { 
            ++child ;
        }
        if(H[s]<H[child]) { 
            H[s] = H[child]; 
            s = child;
            child = 2*s+1;
        }  else { 
             break;
        }
        H[s] = tmp; 
    }
}
void BuildingHeap(int H[], int length)
{
    int i;
    for (i = (length -2) / 2 ; i >= 0; --i)
        HeapAdjust(H,i,length);
}
void HeapSort(int H[],int length)
{
    int i,temp;
    BuildingHeap(H, length);
    for (i = length - 1; i > 0; --i)
    {
        temp = H[i]; H[i] = H[0]; H[0] = temp;
        HeapAdjust(H,0,i);
    }
}
堆排序效果.gif(网络)

相关文章

  • 给自己备份的排序代码

    交换排序 冒泡排序 快速排序 插入排序 直接插入排序 希尔排序 选择排序 简单选择排序 堆排序

  • C++ 归并排序算法的代码

    将开发过程中比较好的代码片段做个备份,下面代码内容是关于C++ 归并排序算法的代码。 #include #incl...

  • sql 按日汇总数据

    今天学习sql,出了一个报表,按照日期进行排序显示数据的。记录下来作为自己的备份。 sql代码如下: 希望自己更加努力!

  • 全面介绍9种常用的排序算法

    本篇给大家介绍几种软件工程中常用的排序算法 所有排序算法的核心的代码都在《常用排序算法核心代码》[https://...

  • iOS - 修改Xcode工程名称

    备份代码,备份代码,备份代码(重要的事情说三遍) ?一. 把工程名NTProject改成PProject 修改之后...

  • C语言处理双向链表的排序问题的代码

    把开发过程中经常用的一些代码备份一次,如下代码段是关于C语言处理双向链表的排序问题的代码,应该是对大家有一些好处。...

  • 排序算法

    排序 1. 选择排序 代码实现 2. 插入排序 代码实现 3. 冒泡排序 代码实现 4. 快速排序 代码实现

  • 《算法》笔记 3 - 选择排序、插入排序、希尔排序

    排序通用代码 选择排序 插入排序 希尔排序 排序通用代码 通用代码支持任意实现了Comparable接口的数据类型...

  • 2021-09-04

    代码备份

  • 给自己做个备份

    做擅长的事情是本能,做不擅长的事情是本事。 网上看过一个提问:“该不该去做自己不擅长的事?” 有个高赞的回答让我无...

网友评论

      本文标题:给自己备份的排序代码

      本文链接:https://www.haomeiwen.com/subject/ahfjsttx.html