排序算法整理(第十五周实践项目)
直接插入排序
#include <stdio.h>
#define MaxSize 20
typedef int KeyType; //定义关键字类型
typedef char InfoType[10];
typedef struct //记录类型
{KeyType key; //关键字项InfoType data; //其他数据项,类型为InfoType
} RecType; //排序的记录类型定义void InsertSort(RecType R[],int n) //对R[0..n-1]按递增有序进行直接插入排序
{int i,j;RecType tmp;for (i=1; i<n; i++){tmp=R[i];j=i-1; //从右向左在有序区R[0..i-1]中找R[i]的插入位置while (j>=0 && tmp.key<R[j].key){R[j+1]=R[j]; //将关键字大于R[i].key的记录后移j--;}R[j+1]=tmp; //在j+1处插入R[i]}
}
折半插入排序(二分排序)
#include <stdio.h>
#define MaxSize 20
typedef int KeyType; //定义关键字类型
typedef char InfoType[10];
typedef struct //记录类型
{KeyType key; //关键字项InfoType data; //其他数据项,类型为InfoType
} RecType; //排序的记录类型定义void InsertSort1(RecType R[],int n) //对R[0..n-1]按递增有序进行直接插入排序
{int i,j,low,high,mid;RecType tmp;for (i=1; i<n; i++){tmp=R[i];low=0;high=i-1;while (low<=high){mid=(low+high)/2;if (tmp.key<R[mid].key)high=mid-1;elselow=mid+1;}for (j=i-1; j>=high+1; j--)R[j+1]=R[j];R[high+1]=tmp;}
}
int main()
{int i,n=10;RecType R[MaxSize];KeyType a[]= {9,8,7,6,5,4,3,2,1,0};for (i=0; i<n; i++)R[i].key=a[i];printf("排序前:");for (i=0; i<n; i++)printf("%d ",R[i].key);printf("\n");InsertSort1(R,n);printf("排序后:");for (i=0; i<n; i++)printf("%d ",R[i].key);printf("\n");return 0;
}
for(int i=0;i<10;++i){int tmp=a[i];int low=0;int hight=i-1;while(low<=hight){mid=(low+hight)/2;if(a[mid]<tmp)low=mid+1;elsehight=mid-1;}//for(int k=i-1;k>=low;--k)a[k+1]=a[k];a[low]=tmp;for(int i=0;i<10;++i)printf("%d ",a[i]);printf(" :%d %d %d\n",low,hight,mid);//每层while循环结束时low=height+1;
//最后的赋值语句也可以这样:
//for(int k=i-1;k>=height+1;--k)
// a[k+1]=a[k];
//a[height+1]=tmp;
}
冒泡排序:
void BubbleSort(RecType R[],int n)
{int i,j,k;RecType tmp;for (i=0; i<n-1; i++){for (j=n-1; j>i; j--) //比较,找出本趟最小关键字的记录if (R[j].key<R[j-1].key){tmp=R[j]; //R[j]与R[j-1]进行交换,将最小关键字记录前移R[j]=R[j-1];R[j-1]=tmp;}printf("i=%d: ",i);for (k=0; k<n; k++)printf("%d ",R[k].key);printf("\n");}
}
//哈哈,贺老改进的冒泡排序:
void BubbleSort1(RecType R[],int n)
{int i,j,k,exchange;RecType tmp;for (i=0; i<n-1; i++){exchange=0;for (j=n-1; j>i; j--) //比较,找出最小关键字的记录if (R[j].key<R[j-1].key){tmp=R[j]; //R[j]与R[j-1]进行交换,将最小关键字记录前移R[j]=R[j-1];R[j-1]=tmp;exchange=1;}printf("i=%d: ",i);for (k=0; k<n; k++)printf("%d ",R[k].key);printf("\n");if (exchange==0) //中途结束算法return;}
}
选择排序:
void SelectSort(RecType R[],int n)
{int i,j,k,l;RecType temp;for (i=0; i<n-1; i++) //做第i趟排序{k=i;for (j=i+1; j<n; j++) //在当前无序区R[i..n-1]中选key最小的R[k]if (R[j].key<R[k].key)k=j; //k记下目前找到的最小关键字所在的位置if (k!=i) //交换R[i]和R[k]{temp=R[i];R[i]=R[k];R[k]=temp;}printf("i=%d: ",i);for (l=0; l<n; l++)printf("%d ",R[l].key);printf("\n");}
}
排序算法整理(第十五周实践项目)相关推荐
- 第十二周实践项目一--图及存储结构算法库
代码: 1.头文件:graph.h,包含定义图数据结构的代码.宏定义.要实现算法的函数的声明: <span style="font-size:12px;">#ifnde ...
- 第五周实践项目8 8皇后问题的回溯求解_栈结构
[全文] 回溯法是一种通用的搜索算法,几乎可以用于求解任何可计算的问题.算法的执行过程就像是在迷宫中搜索一条通往出口的路线,总是沿着某一方向向前试探,若能走通,则继续向前进:如果走不通,则要做上标记, ...
- 第五周实践项目7 后缀表达式
基于栈结构,将中缀表达式转换为后缀表达式的算法步骤是: 初始化运算符栈op; 将'='进栈; 从exp读取字符ch; while (ch!='\0') { if (ch不为运算符) 将后续的 ...
- 第五周实践项目6 数制转换(栈)
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目6-把十进制的整数转换为任一进制数输出.提示:要转换为r进制,则 ...
- Java设计一个测桃花模块_20145209刘一阳《JAVA程序设计》第十五周补充测试
第十五周补充测试 1.实验楼Linux中可以通过(ABC)查看用户登录情况. A .who B .who am i C .who mom likes D .who are you 2.在 Linux ...
- 左耳听风 第三十五周
左耳听风 第三十五周 每周完成一个ARTS: 每周至少做一个 leetcode 的算法题.阅读并点评至少一篇英文技术文章.学习至少一个技术技巧.分享一篇有观点和思考的技术文章.(也就是 Algorit ...
- 信息安全系统设计基础第十五周总结
信息安全系统设计基础第十五周总结 [内容:链接汇总] 一.每周读书笔记链接汇总 [第一周读书笔记] http://www.cnblogs.com/shadow135211/p/4824555.html ...
- 2019年6月6日第十五周体育馆团体预约系统UML软件工程项目日志
体育馆团体预约系统 UML软件工程项目日志 June,6th ,2019 目录 一. 博客地址 1 二. 客户提交内容 1 三. 项目背景 2 四. 项目范围和前景 2 五. 沟通记录 3 六. 甲方 ...
- 补第十五周leetcode算法博客
补第十五周leetcode算法博客 100. Same Tree Given two binary trees, write a function to check if they are the s ...
最新文章
- java并发读取相同的文件_高效读取大文件,再也不用担心 OOM 了!
- click事件延迟300ms,处理方法-----FastClick
- velocity 遍历map
- LeetCode 1111. 有效括号的嵌套深度(奇偶分离)
- 在基于对话框的MFC创建状态栏以及添加时间显示
- 嵌入式davinci电路元素基础和PWM模块
- 《C++游戏开发》笔记十四 平滑过渡的战争迷雾(二) 实现:真正的迷雾来了
- Python抖音机器人制作!让你有看不完的小姐姐
- 不一样的AI:“上天入地”的IBM人工智能
- 自动控制原理学习笔记(五)
- cad问题小百科 持续更新
- java flag 用法_Java中一些常用的方法
- irq_desc操作
- 左岸读书-你是想读书,还是想读完书?
- 怎么恢复格式化的sd卡呢?
- C#和VB.net语法对比图_C#教程
- python字典统计单词个数_python字典统计单词个数
- 国外一些测试网站的分享
- 帧计算机术语,请解释一个计算机名词:“帧”,请分别解释“帧”的名称/用途/分类,...
- Jmeter 参数化中文乱码问题
热门文章
- JavaScript函数的调用
- 欢迎大家踊跃报名担当“讲师”
- python自动登录校园网 密码_python实现校园网自动登录的示例讲解
- 熊猫烧香源代码(转载)
- 【HIMI转载推荐之三】新手教程之如何向APP STORE提交应用
- 快来看看Google出品的Protocol Buffer,别仅仅会用Json和XML了
- 使用cx_freeze打包Python程序
- 嵌入式Linux全攻略 ACE程序移植过程详细讲解
- Oracle rac进阶管理专家指导系列文档
- winform combobox第12345行的数据_Python学习第109课--ndarray的创建和切分操作