IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 基础排序 自练 -> 正文阅读

[C++知识库]基础排序 自练

1.优化冒泡?

#include<stdio.h>
#include<stdlib.h>
#define MAX_size 100
typedef struct{
    int a[MAX_size];
    int length;
}SqLiszt;
void
swap(SqLiszt *L,int i,int j){
    int temp = L->a[i];
    L->a[i]= L->a[j];
    L->a[j]= temp;
}
void 
Bubble_sort(SqLiszt *L){
      int i,j,flag = 1;
       for(i=1;i<L->length && flag ;i++){
           flag = 0;
             for(j=L->length-1;j>=i;j--){ //从后往前 小的在当前j  是下一轮的j+1  
                  if(L->a[j]>L->a[j+1]){
                        swap(L,j,j+1);
                        flag =1;
                  }
             }
       }

}

int main(){
     SqLiszt L;
     L.length =0; //要初始化 为 0!!!!!
     int temp;
        for(int i =1;i<=10;i++){
              scanf("%d",&temp);
              L.a[i] = temp;
              L.length ++;
        }

         Bubble_sort(&L);
        printf("排序后的结果为:\n");
             for(int i= 1; i<=L.length;i++){
                  printf("%d ",L.a[i]);
             }

    return 0;
}

2.直接插入排序?

#include<stdio.h>
#include<stdio.h>
#define MAX_size 100
typedef struct{
    int a[MAX_size];
    int length;
}SqLiszt;
void
swap(SqLiszt *L,int i,int j){
    int temp = L->a[i];
    L->a[i]= L->a[j];
    L->a[j]= temp;
}
void 
Insert_sort(SqLiszt *L){
    int i ,j;
     for(i=2;i<=L->length;i++){ // [0] 做额为空间  【1】 相当于已经排好
            if( L->a[i-1]>L->a[i] ){
                  L->a[0] = L->a[i];
                   for(j=i-1; L->a[j]>L->a[0] ;j--){//如果大于插入的 向后移一位
                          L->a[j+1]=L->a[j];
                   }
                      L->a[j+1]= L->a[0];   //最后j-- 定位到比插入的值小的位置 
            }
          
     }
}
int main(){
     SqLiszt L;
     L.length =0; //要初始化 为 0!!!!!
     int temp;
        for(int i =1;i<=10;i++){
              scanf("%d",&temp);
              L.a[i] = temp;
              L.length ++;
        }

        Insert_sort(&L);
        printf("排序后的结果为:\n");
             for(int i= 1; i<=L.length;i++){
                  printf("%d ",L.a[i]);
             }

    return 0;
}

3.shell?

#include<stdio.h>
#include<stdio.h>
#define MAX_size 100
typedef struct{
    int a[MAX_size];
    int length;
}SqLiszt;
void 
Shell_sort(SqLiszt *L){
    int increment = L->length;
    int j,i;
      do{
           increment /=2;//初始分为五组, 增量越小 一组内元素越多
            for( i= increment+1; i<=L->length; i++){ //排一次 基本有序 
                  if( L->a[i]<L->a[i-increment] ){ // 将 a【i】 插入到自己的增量组中
                       L->a[0]= L->a[i];
                        for(j=i-increment;j>0 &&  L->a[j] > L->a[0] ;j-=increment){
                                 L->a[j+increment]= L->a[j]; //初始 j 就是上一个位置 ,所以要加步长才是原本要插入的位置  --》 增量组整体后移
                        }
                           L->a[j+increment]= L->a[0];
                  }
            }
      } while(increment >1 ); //增量为 1 才结束 表示分为一个组
}
int main(){
     SqLiszt L;
     L.length =0; //要初始化 为 0!!!!!
     int temp;
        for(int i =1;i<=10;i++){
              scanf("%d",&temp);
              L.a[i] = temp;
              L.length ++;
        }

        Shell_sort(&L);
        printf("排序后的结果为:\n");
             for(int i= 1; i<=L.length;i++){
                  printf("%d ",L.a[i]);
             }

    return 0;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-10 10:40:43  更:2021-09-10 10:42:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 21:00:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码