• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
小垃圾
博客园    首页    新随笔    联系   管理    订阅  订阅

内部排序

1、所有排序类型

直接插入排序  折半插入排序  2路插入排序  希尔排序  快速排序  简单选择排序  树形选择排序  堆排序  归并排序  多关键字排序  链式基数排序

2、直接插入排序

//begin

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

    int temp = a[i];

    for(int j = i-1; j>=0; j--){

      if(a[j] > temp){  //将大于a[i]的数往后移动,并且记录将要插入的位置,j+1为要插入的位置

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

        if(j == 0){  //如果j == 0,直接插入a[i]的值

          a[j] = temp;

          break;

        }

      }

      else{  //插入a[i]的值

        a[j+1] = temp;

        break;

      }

    }

  }

//end

3、折半插入排序

//begin

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

    int temp = a[i];

    int low = 0, high = i - 1, m;

    while (low <= high) {  //折半查找到位置,为high+1

      m = (low + high) / 2;

      if (temp > a[m])

        low = m + 1;

      else

        high = m - 1;

    }

    for (int j = i - 1; j >= high + 1; j--) {  //将数据后移

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

    }

    a[high + 1] = temp;  //插入未排序的数据

  }

//end

4、2路插入排序

//begin

  int dq[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

  int dh[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

  dq[0] = a[0]; dh[0] = a[0];

  int dqn = 0, dhn = 0;

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

    int temp = a[i];

    if (a[i] < a[0]) {

      int j = dqn;

      while (dq[j] != 0 && j>=0) {

        if (temp < dq[j]) {

          dq[j + 1] = dq[j];

          j--;

        }

        else

          break;

      }

      dq[j + 1] = temp;

      dqn++;

    }

    else {

      int j = dhn;

      while (dh[j] != 0 && j >= 0) {

        if (temp < dh[j]) {

          dh[j + 1] = dh[j];

          j--;

        }

        else

          break;

      }

      dh[j + 1] = temp;

      dhn++;

    }  

  }

//end

5、希尔排序

6、快速排序

7、简单选择排序

8、树形选择排序

9、堆排序

10、归并排序

11、多关键字排序

12、链式基数排序

13、10种排序的比较

posted @ 2018-06-27 00:18  15084881593  阅读(94)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3