- 2
- 0
- 约1.23万字
- 约 30页
- 2017-02-09 发布于重庆
- 举报
Java的集中基本常用算法
常用算法冒泡排序算法冒泡排序是排序算法的一种,思路清晰,代码简洁,常被用在大学生计算机课程中。“冒泡”这个名字的由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。这里以从小到大排序为例进行讲解基本思想及举例说明冒泡排序的基本思想就是不断比较相邻的两个数,让较大的元素不断地往后移。经过一轮比较,就选出最大的数;经过第2轮比较,就选出次大的数,以此类推。下面以对 3 2 4 1 进行冒泡排序说明。第一轮排序过程3 2 4 1 (最初)2 3 4 2 (比较3和2,交换)2 3 4 1 (比较3和4,不交换)2 3 1 4 (比较4和1,交换)第一轮结束,最大的数4已经在最后面,因此第二轮排序只需要对前面三个数进行再比较。第二轮排序过程2 3 1 4 (第一轮排序结果)2 3 1 4 (比较2和3,不交换)2 1 3 4 (比较3和1,交换第二轮结束,第二大的数已经排在倒数第二个位置,所以第三轮只需要比较前两个元素。第三轮排序过程2 1 3 4 (第二轮排序结果)1 2 3 4 (比较2和1,交换)至此,排序结束。算法总结及实现对于具有N个元素的数组R[n],进行最多N-1轮比较;第一轮,逐个比较(R[1], R[2]), (R[2], R[3]), (R[3], R[4]), ……. (R[N-1], R[N]) ; 最大的元素会被移动到R[N]上。第二轮,逐个比较(R[1], R[2]), (R[2], R[3]), (R[3], R[4]), ……. (R[N-2], R[N-1]);第二大元素会被移动到R[N-1]上。。。。。以此类推,直到整个数组从小到大排序。下面给出了冒泡排序的一般实现和优化实现。一般实现是教科书里常见的实现方法,无论数组是否排序好了,都会进行N-1轮比较;而优化实现,在数组已经排序好的情况下,会提前退出比较,减小了算法的时间复杂度。/* * Created on: 2015年4月25日 * Author: xia */#includestdio.h#includestdlib.h#define N 8voidbubble_sort(int a[], int n);//一般实现Voidbubble_sort(int a[], int n) //n为数组a的元素个数{//一定进行N-1轮比较for (inti = 0; i n - 1; i++) {//每一轮比较前n-1-i个,即已排序好的最后i个不用比较for (int j = 0; j n - 1 - i; j++) {if (a[j] a[j + 1]) {int temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}}}}//优化实现voidbubble_sort_better(int a[], int n) //n为数组a的元素个数{//最多进行N-1轮比较for (inti = 0; i n - 1; i++) {intisSorted = 1;//每一轮比较前n-1-i个,即已排序好的最后i个不用比较for (int j = 0; j n - 1 - i; j++) {if (a[j] a[j + 1]) {isSorted = 0;int temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}}if (isSorted)break; //如果没有发生交换,说明数组已经排序好了}}intmain() {intnum[N] = { 89, 38, 11, 78, 96, 44, 19, 25 };bubble_sort(num, N); //或者使用bubble_sort_better(num, N);for (inti = 0; i N; i++)printf(%d , num[i]);printf(\n);system(pause);return 0;}选择排序算法选择排序是排序算法的一种,这里以从小到大排序为例进行讲解。基本思想及举例说明选择排序(从小到大)的基本思想是,首先,选出最小的数,放在第一个位置;然后,选出第二小的数,放在第二个位置;以此类推,直到所有的数从小到大排序。在实现上,我们通常是先确定第i小的数所在的位置,然后,将其与第i个数进行交换。下面,以对 3 2 4 1 进行选择排序说明排序过程,使用min_index记录当前最小的数所在的位置。第1轮排序过程(寻找第1小的数所在的位置)3 2 4 1(最初,min_index=1)3 2 4 1(3 2,所以min_index=2)3 2 4 1(2
您可能关注的文档
- IxChariot使用方法.doc
- J2ME的3d开发教程.doc
- JAVA--基础知识.doc
- Jason精细反演质量控制.doc
- jason随机反演的中文手册.doc
- JavaBean属性命名规范问题分析.doc
- jason反演岩性曲线测井解释成果加载.doc
- Jason手册a.doc
- I型胶原壳聚糖复合材料生物相容性研究.doc
- javalangUnsatisfiedLinkError解决方法汇集.doc
- 2026年及未来5年内中国液体氩气行业投资前景及策略咨询研究报告.docx
- 2026年及未来5年内中国黄铜合页行业投资前景及策略咨询研究报告.docx
- 2026年及未来5年内中国竹工艺家具行业投资前景及策略咨询研究报告.docx
- 2025年中国微机数显自动分析仪市场调查研究报告.docx
- 2026年及未来5年内中国微尘白色粉笔行业投资前景及策略咨询研究报告.docx
- 2025年中国微电脑型压胶机市场调查研究报告.docx
- 2026年及未来5年内中国数字化等功游泳训练测试系统行业投资前景及策略咨询研究报告.docx
- 2025年中国圆形花瓶市场调查研究报告.docx
- 2026年及未来5年内中国植物纤维静淀过滤器行业投资前景及策略咨询研究报告.docx
- 2025年中国超音波手套机市场调查研究报告.docx
最近下载
- 平潭澳海上风电场项目可研收口报告2018年4月版本15工程设计概算表.pdf VIP
- 2024年常州信息职业技术学院单招职业技能测试题库(历年真题).docx VIP
- 腹膜透析指南(2025年版).docx VIP
- 党的二十届四中全会PPT课件.ppt VIP
- 产品设计与实训 设计实训.ppt VIP
- 施工现场建筑垃圾减量化专项方案.pdf VIP
- 《数学史》数学的起源.pptx VIP
- 2026年信息科技课标试题及答案.doc VIP
- 本科课件-ArcGIS Engine地理信息系统开发教程(完整).ppt
- 北京通州区2022-2023学年高一下学期期末质量检测英语试卷 含解析.docx VIP
原创力文档

文档评论(0)