C语言之改进的冒泡
2014-10-11 16:35
190 查看
前言:简单的冒泡排序在数组基本有序的情况下,很多比较是多余的,即简单冒泡排序的每轮都是从当前气泡比较到最上面的气泡,然而从最上面往下连续的若干气泡却是正序的。为了不和那些不需要排序的正序气泡作比较,节省执行时间,本程序对简单的冒泡排序进行一下修改。
#include <stdio.h> #define N 5 #define swap(a,b) a=a+b,b=a-b,a=a-b int main(void) { int a ,h,i,j; for(i=0; i<N; i++) scanf("%d",a+i); for(i=N-1; i>0; i=h) //3.上一轮h代表的元素的上面的气泡是正序的,本轮比较到这里为止 for(j=0,h=0; j<i; j++) //1.从下往上两两比较 if(a[j]>a[j+1]) swap(a[j],a[j+1]),h=j; //2.h记住本次两两比较的第一个元素的位置 for(i=0; i<N; i++) printf("%d ",a[i]); printf("\n"); return 0; }
相关文章推荐
- 1014 C语言文法定义与C程序的推导过程 程序:冒泡算法C程序(语法树)
- C语言实现 排序源程序(包括直接插入、希尔、冒泡、快速、简单选择、堆排序)
- 排序算法--选择+冒泡及其改进
- 冒泡算法改进--双向冒泡算法 Double Bubble
- 内排序(3)交换排序:改进的冒泡和快速排序
- 【C语言】单链表的相关热点面试题(包括:从尾到头打印,逆置,冒泡,寻找中间节点,倒数k节点)
- C语言------冒泡排序
- C语言实现单向链表及其各种排序(含快排,选择,插入,冒泡)
- 冒泡算法改进--双向冒泡算法 Double Bubble
- C语言学习笔记 -冒泡排序
- C语言实现冒泡、插入、选择、快速排序
- C语言的指针、链表的原理和各类操作以及学生信息管理系统改进报告
- C语言排序(冒泡,选择,快排,插排)
- C语言选择、冒泡、插入排序算法
- 【小镇的技术天梯】C语言,冒泡、快速、希尔、选择排序
- C语言.冒泡选择及快排
- CSV转LibSVM格式之C语言实现改进
- c语言版本的冒泡法
- C语言实现linux网卡检测改进版
- 排序:冒泡与选择的改进