C语言之冒泡排序算法

一、什么是冒泡排序?
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列
的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。
二、冒泡排序的原理
   冒泡排序原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过
去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束,
其余类似看例子。
或者可以这样描述冒泡排序:
就是将第一个记录的关键字和第二个记录的关键字进行比较,
如果后面的比前面的小则交换,然后比较第二个和第三个,依次类推。
比完一趟,最大的那个已经放到了最后的位置,这样就可以对前面N-1个数再循环比较。 
稳定,时间复杂度 O(n^2)
(看到很多介绍冒泡排序的地方,包括教课书上个人感觉很多描述的都不是很清楚,也可能是我个人的理
解能力差一点,但是从网上搜到得这张图看起来很清晰了,转发一下希望能帮助到有的朋友)

三、冒泡排序程序代码

#include<stdio.h>

void Maopao(int *a,int n);
int main(void)
 {  int k;
 int a[10]={2,4,6,8,0,1,3,5,7,9};
 for(k=0;k<10;k++)
 {
 printf("%d ",a[k]);
}
printf("\n");
Maopao(a,10);
for(k=0;k<10;k++)
 {
 printf("%d ",a[k]);
}
return 0;
 } 
void Maopao(int *a,int n)
 {
    int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
 t=a[j];
 a[j]=a[j+1];
 a[j+1]=t;
   }
}
}

}

时间: 2024-10-12 11:12:14

C语言之冒泡排序算法的相关文章

C语言实现冒泡排序算法

新人新气象,又一个学习C的新人来了. 冒泡排序,基础中的基础,原理不啰嗦了. 代码中display()为数组展示函数,sort_bubble()为直接实现排序,details()为带动画展示. 伪代码: #include <stdio.h>#include <stdlib.h>#include <windows.h> #define LENGTH 20 const WORD FORE_BLUE = FOREGROUND_BLUE|FOREGROUND_INTENSITY

【C语言】两种方式实现冒泡排序算法

题目要求 编写一个C语言程序,实现基本的冒泡排序算法. 算法 冒泡排序,用一句话来总结: 一组数中,相邻的两个数进行比较.交换,将最大(小)数交换至尾(首)部,即完成了一次冒泡排序 要想对N个数字进行排序,循环N次即可. 如果真的不理解冒泡排序算法,请点击:冒泡排序_360百科 核心代码 //方式一:从头向尾遍历,将最大数(相对)沉入尾部(相对) void BubbleSort1(int *arr,int sz){ int i = 0; int j = 0; assert(arr); for(i

冒泡排序算法

冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端. 本文地址:http://www.cnblogs.com/archimedes/p/bubble-sort-algorithm.html,转载请注明源地址. 冒泡排序对n个项目需要O(n2)的比较次数,且可以原地排序.尽

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

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

冒泡排序算法的JavaScript实现

作为经典的排序算法之一,冒泡排序在JavaScript中也有多种实现方式. 在一些最常见的实现中会声明临时变量,在另一些不必声明临时变量的实现中则可能只支持数值数组或字符串数组(二者之一). 下面介绍两种[无须声明临时变量],[对数值数组和字符串数组都适用]的实现方式. ES5版: var arr = [5, 25, 2, 53, 22, 10]; function bubbleSort(arr) { for (var j = 1, len = arr.length; j < len; j++)

C语言之冒泡排序

假设要对含有n个数的序列进行升序排列,冒泡排序算法步骤是: 1.从存放序列的数组中的第一个元素开始到最后一个元素,依次对相邻两数进行比较,若前者大后者小,则交换两数的位置: 2.第1趟结束后,最大数就存放到数组的最后一个元素里了,然后从第一个元素开始到倒数第二个元素,依次对相邻两数进行比较,若前者大后者小,则交换两数的位置: 3.重复步骤1 n-1趟,每趟比前一趟少比较一次,即可完成所求. 例1.随机产生10个100以内的数,将其用冒泡法按升序排列后输出. #include <stdio.h>

冒泡排序算法可视化

在百度前端技术学院的任务列表那里看到了有一个任务是要求用javascript实现可视化的排序算法,感觉很有趣,就稍微研究了一下,本来是想实现冒泡排序算法和快速排序算法的可视化的,可是快速排序在要如何实现可视化这一步上感觉有一点难度,于是就暂时放弃了. 冒泡排序原理 冒泡排序我们应该都不陌生吧?很简单的两个for循环就可以实现了,其基本原理是:在一开始的时候,比较第一第二个数,如果如果第一个数比第二个数大的话则交换二者位置,在比较第二个和第三个数,同样的如果第二个数比第三个数大的话,则交换二者位置

冒泡排序算法。

   冒泡排序算法 题目: 给定7个int类型的数,用冒泡排序实现出来.  code:   public class Maopaopaixu {    public static  void fun()    {        int arr[] ={9,8,6,1,5,3,2};        System.out.println("数组排序前的顺序为:");        for(int i=0;i<arr.length;i++)        {            Sy

javascript学习5-练习之2冒泡排序算法

复习冒泡排序算法,同时自己也写了一个排序算法. 实现效果: 1.自己的算法思想: 数组中数据取第一个为默认最小,依次和后面每个数据比较,只要有比其小的就交换直至找出最小的. 然后将第二个数据与其后面所有数据比较,找出最小,依次重复 2.冒泡排序算法思想: 数据从最低端到最高端为 a[n] ......a[0] 第一轮:将a[0]与a[1]比较,高者上,然后依次比较a[1]和a[2]....a[n-1]和a[n]每次将大的往上冒 第二轮: 将a[0]与a[1]比较,高者上,然后依次比较a[1]和a