起泡排序【模板】

这个起泡排序的 for 循环比较奇怪,注意。。。邓老师写的还是为了开发我们的思维。。。

另外就是 swap 函数在 using namespace std; 中有现成的函数。。。

#include <iostream>

using namespace std;

void bubblesort(int A[],int n)
{
	for(bool sorted=false;sorted=!sorted;n--)
		for(int i=1;i<n;i++)	//自左向右,检查 A[0,n) 的相邻元素
			if(A[i-1]>A[i])		//逆序
			{
				swap(A[i-1],A[i]);
				sorted=false;
			}
}

int main()
{
	int i;
	int V[10]={11, 23, 19, 7, 17, 5, 3, 13, 2, 29};

	printf("排序前:");
	for(i=0;i<10;i++)
		printf("%d ",V[i]);
	printf("\n");

	//起泡排序
	bubblesort(V,10);

	printf("排序后:");
	for(i=0;i<10;i++)
		printf("%d ",V[i]);
	printf("\n");

    return 0;
}

运行结果为:

排序前:11 23 19 7 17 5 3 13 2 29
排序后:2 3 5 7 11 13 17 19 23 29

时间: 2024-10-03 14:27:49

起泡排序【模板】的相关文章

VFP中产生随机数并实现起泡排序

本文来介绍一下在vfp中实现起泡排序的问题,考虑到做成实例比较好理解,因此本文还是会以实例的方式来表达.本例在刚开始设计时,是采用这种方式来处理的:定义一个作用域为全局的.宽度为10的一维数组,利用表单上的文本框连续输入并接收10个数字,然后再对这10个数字进行从小到大的排序.不过运行了一下,觉得这种方式好麻烦,便改成了使用随机函数产生10个数字并对它们排序,所以本文也涉及到了一点vfp中的随机函数. 本例运行时如下图: 下面我们进入正题,首先看一下如何在vfp中产生随机数.有的学友以为vfp中

【DSA MOOC】起泡排序的原理及常数优化

根据学堂在线TsinghuaX: 30240184X 数据结构(2015秋)这门课的内容,对bubblesort做了一些总结. 1. bubblesort(起泡排序),原理来自这样一个观察规律:若序列有序,则任意一对相邻元素顺序.其逆否命题为:若存在相邻元素逆序,则序列无序. 2. 利用这一原理,bubblesort按照逐步消除逆序对的思路来实现整体有序. 3. 实现:对序列进行若干趟扫描,每遇到相邻逆序对,交换之,直至不再存在逆序对. 4. 算法的正确性分析: (1)不变性(问题已求解的部分扩

拓扑排序模板

#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <queue> using namespace std; const int maxn = 20010; //ip表示第几条边 //indeg表示入度 int head[maxn], ip, indeg[maxn]; int n, m, seq[maxn];//seg表示

UVa 10305 Ordering Tasks:拓扑排序模板

10305 - Ordering Tasks Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=1246 模板题.注意倒着输出. 模板: 01./*0.022s*/ 02. 03.#include<bits/stdc++.h> 04.using na

VFP中实现选择排序

众所周知在常用的简单排序方法中,前文所介绍的起泡排序(冒泡排序)是效率最差的一个了.我们今天所介绍的这个选择排序也是简单排序中的一种,不过比起泡排序的效率要高,并且也比较容易实现. 这些常用的排序方法多见诸于C/C++方面的资料中,如果要在vfp中实现这些排序方法,原理是一样的,只是在代码实现上略有差别.例如,在C/C++中数组的下标是从0开始,而vfp中数组的下标是从1开始:C/C++中的for语句可以采用for(i=0;i<n;i++)这种形式来同时完成变量赋初值.变量终值判断.变量递增这些

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

 1 排序的基本概念 排序: 所谓排序,就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来.其确切定义如下: 输入:n个记录R1,R2,-,Rn,其相应的关键字分别为K1,K2,-,Kn. 输出:Ril,Ri2,-,Rin,使得Ki1≤Ki2≤-≤Kin.(或Ki1≥Ki2≥-≥Kin). 排序的稳定性:当待排序记录的关键字均不相同时,排序结果是惟一的,否则排序结果不唯一.在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方

常见的五类排序算法图解和实现(交换类:冒泡排序,递归的快速排序)

冒泡排序算法: 总的来说就是两两交换,反复直到有序,第一个记录和第二个记录,若逆序则交换,然后比较第二个和第三个记录,以此类推,直到第 n 个记录和第 n-1个记录比较完毕为止,第一趟排序,结果关键字最大的记录被安排在最后一个位置.对前 n-1个记录继续冒泡排序,使得关键字次大的记录安排在第 n-1个位置.如此重复,直到没有需要交换的记录为止(仅仅是第一个和第二个交换过为止).整个一趟趟的选出最值的过程,仿佛是那水里的气泡,咕嘟咕嘟的往上翻的过程. 递增冒泡排序过程图解: 一般先比较第一个元素和

各种排序算法的分析及java实现

排序一直以来都是让我很头疼的事,以前上<数据结构>打酱油去了,整个学期下来才勉强能写出个冒泡排序.由于下半年要准备工作了,也知道排序算法的重要性(据说是面试必问的知识点),所以又花了点时间重新研究了一下. 排序大的分类可以分为两种:内排序和外排序.在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序.下面讲的排序都是属于内排序. 内排序有可以分为以下几类: (1).插入排序:直接插入排序.二分法插入排序.希尔排序. (2).选择排序:简单选择排序.堆排序.

java几种排序算法的实现及简单分析_java

本文实例讲述了java几种排序算法的实现及简单分析.分享给大家供大家参考.具体如下: package test; public class first { /*普通的插入排序*/ public void insertSort(int[] list) { int i, j; list[0] = -999; //相当于设置一个监视哨兵,不用判断是否越界, //但要求数组从第二个数开始即i=1开始存储 for (i = 1; i < list.length; i++) { j = i; while (