排序算法二:冒泡排序

  冒泡排序的基本思想是:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。

代码实现如下:

#include <stdio.h>
int main() {
    //冒泡排序.此处是由大到小
    //先确定变量
    //赋初始值
    //循环输入数值
    //循环输出数值
    printf("冒泡排序\n");
    int book[100], i, j, t, n;
    printf("请输入数值个数:");
    scanf("%d", &n);
    for (i = 1; i <= n;i++) {
        printf("第%d个数:",i);
        scanf("%d", &book[i]);
    }
    //冒泡排序核心部分
    for (i = 1; i <= n - 1;i++) {      //有n个数就比较n-1趟,因为每个数都要作为主数跟别的数比较一次
        for (j = 1; j <= n - i;j++) {  //每趟比较次数为n-i,因为已经归位的数不用再比较
            if (book[j]<book[j+1]) {   //如果前者小于后者,就交换位置
                t = book[j];
                book[j] = book[j+1];
                book[j + 1] = t;
            }
        }
    }
    printf("排序结果:\n");
    for (i = 1; i <=n; i++)
            printf("%d\t",book[i]);
    getchar();
    getchar();
    return 0;
}

结果运行结果是:

时间: 2024-11-08 21:35:30

排序算法二:冒泡排序的相关文章

排序算法&lt;二&gt;冒泡排序

#include<iostream> using namespace std; int arr[]={11,12,51,23,64,23,68,1,12}; void bubbleSort(int arr[]){ for (int i=0; i<9; i++){ for (int j=0; j<8-i; j++) if (arr[j]>arr[j+1]) swap(arr[j], arr[j+1]); } } int main() { bubbleSort(arr); for

排序算法之冒泡排序Java实现

排序算法之冒泡排序 一.初级的冒泡排序 import java.util.Arrays; /** * * @title BubbleSort * @describe 冒泡排序 * @author 张富昌 * @date 2016年10月1日下午3:56:30 */public class BubbleSortLow { // 起泡排序是快速排序的基础,但是排序速度较慢. // 基本思想:将序列中第 1 个元素与第 2 个元素进行比较,如前者大于后者,则两个元素交换位置,否则不交换: // 再将第

排序算法之冒泡排序(Java)

 冒泡排序即每次遍历.相邻数字间进行比较,前者大于后者进行交换,不断将最大值后移,直至沉至最后位置:算法关键要点在于确定每次循环的边界: 后面两种算法则是对冒泡排序一定程度上的改良,但相对于其他排序算法,冒泡排序性能依然较差. //冒泡排序 public class Bubble_Sort { //最原始的解法 public void bubble_sort1(int[] data) { int n = data.length; for(int i = 0; i < n; i++) { //

我的Java开发学习之旅------&gt;Java经典排序算法之冒泡排序

冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. 一.算法原理 冒泡排序算法的运作如下: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 3.

基础排序算法(冒泡排序,选择排序,插入排序)

最近经常调用api中的排序算法,很少自己写了,有时候也只写写快速排序这些比较快的排序,然而刚开始学排序时用的一些基本的排序算法却有点忘了 正好今天Java老师让我们每个人写个选择排序热热手,趁这个机会再来复习下一些基本的排序好了. 一.冒泡排序(稳定排序) 学编程接触到的第一个排序算法,基本思路就是,给定一个无序数组a0.a1.a2.a3....an; 通过从左到右相邻的元素两两比较,把最大或者最下的数依次放到数组的右边,最后得到有序的序列 public static void maoPao(i

排序算法之冒泡排序的两种方式

冒泡排序是排序算法的一种,思路清晰,代码简洁,常被用在大学生计算机课程中. 冒泡排序有两种方式,相邻的两个数比较,把大的数(或者小的数)放在上面,依次进行,像水泡一样,逐渐上浮. 也可以以相反的过程,把较大的数(或者较小的数)放在下面,推入湖底.这两种方式都是冒泡排序,因为冒泡排序是比较相邻的两个数,下标不具有跳跃性,同时也是一种稳定的算法. 方式一:较大的数(或者较小的数)上浮 1 void BubbleSort(int a[], int n) 2 { 3 for(int i=0; i<n-1

排序算法 之 冒泡排序

之前看到一个题目,大概是:有一个长度为n的数组,数组内的元素取值范围为0到m,且不相等,要求元素经过n次移动后使数组有序(即算法的复杂度为O(n)).看到题目后想了快速排序和归并排序发现并不能满足题目要求,直到有次看书有看到了桶排序然后豁然开朗,所以决定把这些排序算法再写一遍,加深记忆. 约定:之后的文章默认待排序的数组大小都为n,排序结果为由小到大,采用c#作为代码实现. 1.基本的冒泡排序算法: 基本思想: 冒泡排序外层共需要对序列进行n-1次遍历,内层从e[0]到e[n-i](i为外层遍历

经典排序算法之冒泡排序

一,算法原理 冒泡排序是交换排序的一种,原理是通过比较相邻两个元素的大小,如果发现顺序不对,就交换这两个元素的位置.当第一次循环结束时,最大的元素就被筛选出来,然后进入第二次循环,以此类推,直到没有任何一对数据进行比较. 下面看一个案例: 假设有5个数字,依次为:5,4,6,3,1 用冒泡排序的思想来实现的话,过程是这样的: 外层第一次循环: 4,5,6,3,1 -> 4,5,6,3,1 -> 4,5,3,6,1 -> 4,5,3,1,6 找到最大数6 外层第二次循环: 4,5,3,1,

排序算法之一--冒泡排序,选择排序,插入排序

一.排序算法定义 1.排序算法定义 排序算法是一种能将一串数据依照特定顺序进行排列的一种算法 2.六种排序算法理解方式 想象小时候老师给我们按照身高进行排队时用到的方法,脑子里面要浮现老师排身高的场面   以从矮到高进行排序为例 3.稳定性的定义 一个排序算法是稳定的,当有两个相等键值的纪录R和S,且在原本的列表中R出现在S之前,在排序过的列表中R也将会是在S之前. 二.三种基本排序算法 1.冒泡排序:"移" 把最高的移到最右边 第一次循环,找到最高的那个人放到最右边       方法

【排序算法】冒泡排序(Bubble Sort)

一.简介 冒泡排序(Bubble Sort)也是一种简单直观的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. 二.解题思路 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.这步做完后,最后的元素会是最大的数. 针对所有的元素重复以上的