排序(3)---------冒泡排序(C语言实现)

说到冒泡排序,大一的时候第一次学习这个排序算法,可能大家不知道,“冒泡”在我说的方言里面是吹牛逼的意思。

所以就认为这个排序算法特吹牛逼有木有。

相信大家对全部的排序算法,这个想必是最熟悉的。

大学老师多次强调,去培训。讲师也会提到。这个在面试常常被问到,所以我建议大家最好把这个算法背下来,做到心中有冒泡,手上写出来 哈哈。

好了,言归正传。

什么是冒泡排序,所谓冒泡。比方有一天你神经病发作突然跑到河边,扔了一块石头进去。如果这里河底产生了一个气泡,它会一直往上窜啊窜,知道露出水面。见天日。没错。这就是冒泡排序的核心步骤。

冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它反复地走訪过要排序的数列,一次比較两个元素,假设他们的顺序错误就把他们交换过来。走訪数列的工作是反复地进行直到没有再须要交换。也就是说该数列已经排序完毕。这个算法的名字由来是由于越小的元素会经由交换慢慢“浮”到数列的顶端。

源码:

#include "stdafx.h"
#include <stdlib.h>

void Bubble_Sort()
{
	int arr[10];

	for ( int i=0; i<10; i++)  //初始化数据
	{
		arr[i] = rand()%520;  //随机生成数据
	}
	printf("Before sort:\n");  //打印排序前的数据
	for (int i = 0; i < 10; i++)
	{
		printf("%d ",arr[i]);
	}

	//開始排序
	for (int i = 0; i < 10-1; i++)  //仅仅须要比較length-1次,比方3个数相比 仅仅须要比較2次
									//网上非常多代码都是i<length  事实上多余了
	{
		for (int j = 0; j < 10-i-1; j++)  //每次都能找到最小的数,因此能够将其排除,条件即变为:j<length-i-1
		{
			if (arr[j] > arr[j+1])  //交换
			{
				int temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
	}

	printf("\nAfter sort:\n"); //打印排序后的数据
	for (int i = 0; i < 10; i++)
	{
		printf("%d ",arr[i]);
	}

}

int _tmain(int argc, _TCHAR* argv[])
{
	Bubble_Sort();

	printf("\n");
	system("pause");
	return 0;
}

执行结果:

Before sort:
41 267 94 500 449 124 38 238 442 24
After sort:
24 38 41 94 124 238 267 442 449 500
请按随意键继续. . .

如有错误,望不吝指出。

时间: 2024-08-11 01:19:30

排序(3)---------冒泡排序(C语言实现)的相关文章

C语言排序算法之简单交换法排序,直接选择排序,冒泡排序

C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 简单交换法排序 1 /*简单交换法排序 2 根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置 3 交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动 4 不稳定 5 */ 6 #include<windows.h> 7 #include<stdio.h> 8 void main(){ 9 int i,j,arr[10

C语言中的排序算法--冒泡排序,选择排序,希尔排序

冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端 维基百科:点击打开链接 [cpp] view plain copy /* 用选择法对10个数进行排序 */ #include<stdio.h> void main() { int i,j,

排序算法总结(C语言版)

1.    插入排序 1.1     直接插入排序 1.2     Shell排序 2.    交换排序 2.1     冒泡排序 2.2     快速排序 3.    选择排序 3.1     直接选择排序 3.2     堆排序 4.    归并排序 4.1     二路归并排序 4.2     自然合并排序 5.    分布排序 5.1     基数排序 1.插入排序 1.1      直接插入排序 将已排好序的部分num[0]~num[i]后的一个元素num[i+1]插入到之前已排好序的

深入排序算法的多语言实现

深入浅出排序算法的多语言实现 作者:白宁超 2015年10月8日20:08:11 摘要:十一假期于实验室无趣,逐研究起数据结构之排序.起初觉得就那么几种排序,两三天就搞定了,后来随着研究的深入,发觉里面有不少东西.本文介绍常用的排序算法,主要从以下几个方面:算法的介绍.算法思想.算法步骤.算法优缺点.算法实现.运行结果.算法优化等.最后对本文进行总结.本文为作者原创,程序经测试无误.部分资料引用论文和网络材料以及博客,后续参见参考文献.(本文原创,转载注明出处) 1 排序的基本概念 排序: 所谓

【最全】经典排序算法(C语言)

本文章包括所有基本排序算法(和其中一些算法的改进算法): 直接插入排序.希尔排序.直接选择排序.堆排序.冒泡排序.快速排序.归并排序.基数排序. 算法复杂度比较: 算法分类 一.直接插入排序 一个插入排序是另一种简单排序,它的思路是:每次从未排好的序列中选出第一个元素插入到已排好的序列中. 它的算法步骤可以大致归纳如下: 从未排好的序列中拿出首元素,并把它赋值给temp变量: 从排好的序列中,依次与temp进行比较,如果元素比temp大,则将元素后移(实际上放置temp的元素位置已经空出) 直到

经典排序算法 - 冒泡排序Bubble sort

 原文出自于 http://www.cnblogs.com/kkun/archive/2011/11/23/bubble_sort.html 经典排序算法 - 冒泡排序Bubble sort 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子 例子为从小到大排序, 原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 | 第一趟排序(外循环) 第

排序(6)---------归并排序(C语言实现)

归并排序: 归并操作,也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作.归并排序算法依赖归并操作. 归并操作的过程如下: (1) 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 (2) 设定两个指针,最初位置分别为两个已经排序序列的起始位置 (3) 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置 (4) 重复步骤3直到某一指针到达序列尾 (5) 将另一序列剩下的所有元素直接复制(抄)到合并序列尾 简单的说,就是将一个序列不断的进行

(转载)排序一 冒泡排序

排序一 冒泡排序 目录 要点 算法思想 算法分析 冒泡排序算法的性能 时间复杂度 算法稳定性 优化 完整参考代码 JAVA版本 要点 冒泡排序是一种交换排序. 什么是交换排序呢? 交换排序:两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止. 算法思想 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成. 这个算法的名字由来是因为越小的元素会经由交换慢慢"浮&q

选择排序与冒泡排序

这是两种非常相似的算法,都是两个嵌套循环.之前看网上很多人将选择排序当冒泡排序用,我怕以后混了,记录一下. 选择排序 /** * 选择排序 * @Title: getSelectSort * @Description: TODO(这里用一句话描述这个方法的作用) * @param @param arr * @param @return 设定文件 * @return int[] 返回类型 * @throws */ public static int[] getSelectSort(int[] ar