算法与数据结构之冒泡排序

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 void BubbleSort(int *a,int n);
 4
 5 int main(void)//入口函数,整型,无参数
 6 {
 7     int k;
 8     int a[10]={2,4,6,8,0,1,3,5,7,9};
 9     for(k=0;k<10;k++)
10         {
11             if(k==9)
12                 printf("%d\n",a[k]);
13             else
14                 printf("%d ",a[k]);
15         }
16     BubbleSort(a,10);
17     for(k=0;k<10;k++)
18         {
19             if(k==9)
20                 printf("%d\n",a[k]);
21             else
22                 printf("%d ",a[k]);
23         }
24     system("pause");
25     return 0;
26 }
27
28 void BubbleSort(int *a,int n)//数组的名字即为第一个元素地址
29 {
30 int i,j,t;
31 for(i=0;i<n-1;i++)//外层循环,
32     for(j=0;j<n-i-1;j++)//内存循环,相邻元素一一比较
33     {
34         if(a[j]>a[j+1])
35         {
36             t=a[j];
37             a[j]=a[j+1];
38             a[j+1]=t;
39         }
40     }
41
42 }
时间: 2024-11-06 03:49:55

算法与数据结构之冒泡排序的相关文章

数据结构——排序——冒泡排序算法

冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端. 冒泡排序对n个项目需要O(n2)的比较次数,且可以原地排序.尽管这个算法是最简单了解和实作的排序算法之一,但它对于少数元素之外的数列排序是很没有效率的. 冒泡排序是与插入排序拥有相等的执行时间,但是两种法在需要的交换次

数据结构之排序算法(二)-冒泡排序及改进

冒泡排序算法需要遍历几次数组.每次遍历都要比较连续相邻的元素,如果某一对相邻元素是降序,则互换它们的值,否则,保持不变.由于较小的值像"气泡"一样逐渐浮想顶部,而较大的值沉向底部,所以叫冒泡排序. 冒泡排序的图解是: 总结一句话就是:连续比较相邻的元素,降序则呼唤.有n个数,共需要比较n-1趟,第i趟,需要比较n-i次. BubbleSort.java public class BubbleSort {//时间复杂度O(n^2) public static void display(i

深层次两张图解经典6大排序与6大基础数据结构——学完这些,妈妈再也不用担心我的排序算法与数据结构

本文从冒泡排序撩起,对选择.插入.希尔.归并.快排6种经典的数组排序进行了深入分析,并详解其间的关联,让你深刻理解其中的关键点:同时对经典的数据结构Vector.Stack.Queue.树.Map.Set做了归纳总结,对其底层的实现做了解析,分享给大家,作为每一个中高级程序员应该懂得的算法与排序,祝大家早上走上自己的"成金之路". 目录: 1.排序算法 2.数据结构 3.资料参考 1.排序算法: a.起源: 计算机从诞生起,就在模拟人这种智能生物的行为,而排序也来自于日常生活中,最经典

算法与数据结构

目前,计算机已深入到社会生活的各个领域,由其是Web前端应用,其应用已不再仅仅局限于科学计算,而更多的是用于控制,管理及数据处理等非数值计算领域.计算机是一门研究用计算机进行信息表示和处理的科学.这里面涉及到两个问题:信息的表示,信息的处理. 信息的表示和组织又直接关系到处理信息的程序的效率.随着Web应用问题的不断复杂,前端页面功能的丰富,导致信息剧增与信息范围的拓宽,使许多WEB应用的规模很大,结构又相当复杂.因此,必须分析待处理问题中的对象的特征及各对象之间存在的关系,这就是数据结构. 编

九种经典排序算法详解(冒泡排序,插入排序,选择排序,快速排序,归并排序,堆排序,计数排序,桶排序,基数排序)

综述 最近复习了各种排序算法,记录了一下学习总结和心得,希望对大家能有所帮助.本文介绍了冒泡排序.插入排序.选择排序.快速排序.归并排序.堆排序.计数排序.桶排序.基数排序9种经典的排序算法.针对每种排序算法分析了算法的主要思路,每个算法都附上了伪代码和C++实现. 算法分类 原地排序(in-place):没有使用辅助数据结构来存储中间结果的排序**算法. 非原地排序(not-in-place / out-of-place):使用了辅助数据结构来存储中间结果的排序算法 稳定排序:数列值(key)

AJPFX关于学习java遇到的问题:对算法和数据结构不熟悉

为什么我先拿“数据结构和算法”说事捏?这玩意是写程序最最基本的东东.不管你使用 Java 还是其它的什么语言,都离不开它.而且这玩意是跨语言的,学好之后不管在哪门语言中都能用得上. 既然“数据结构和算法”这么重要,为什么很多 Java 新手却很不熟悉捏?我琢磨了一下,估计有两种可能.有些人虽然是计算机系毕业的,但是当初压根没好好学过这门课程,到工作时早都还给老师了:还有一些人是中途转行干编程,转行后又没有好好地打基础(都指望速成). 下面我列出几个很基本的问题,如果你每一个问题都搞得很清楚,那说

Java算法与数据结构

Java算法与数据结构学习 一.数组 //声明数组 dataType[] arrayRefVar; //创建数组 arrayRefVar = new dataType[arraySize]; dataType[] arrayRefVar = new dataType[arraySize]; dataType[] arrayRefVar = {value0, value1, ..., valuek}; 1.使用自定义类封装数组 public class MyArray{ private long

浅谈算法和数据结构

: 一 栈和队列 http://www.cnblogs.com/yangecnu/p/Introduction-Stack-and-Queue.html 最近晚上在家里看Algorithems,4th Edition,我买的英文版,觉得这本书写的比较浅显易懂,而且“图码并茂”,趁着这次机会打算好好学习做做笔记,这样也会印象深刻,这也是写这一系列文章的原因.另外普林斯顿大学在Coursera 上也有这本书同步的公开课,还有另外一门算法分析课,这门课程的作者也是这本书的作者,两门课都挺不错的. 计算

【算法与数据结构】哈希表-链地址法

哈希表的链地址法来解决冲突问题 将所有关键字为同义词的记录存储在同一个线性链表中,假设某哈希函数产生的哈希地址在区间[0, m - 1]上,则设立一个至振兴向量 Chain  ChainHash[m]; 数据结构 //链表结点 typedef struct _tagNode { int data; //元素值(关键字) struct _tagNode* next; //下一个结点 }Node, *PNode; //哈希表结点 typedef struct _tagHashTable { //这里