1.用冒泡法对10个数排序

【原理】

它是一种较简单的排序算法。它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾。 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止。

【复杂度】

冒泡排序的时间复杂度是O(n2),空间复杂度是O(n),是一种稳定的排序算法。

需要注意的是:每一轮冒泡后,最后一个数必然是这一轮排序完的最大值,下一轮不必再参与冒泡。所以,内部循环的上限是size-i-1。

【代码】

#include<iostream>
using namespace std;

template<class T>
void bubble_sort(T Array[],const int size)
{
    T temp;//中间变量
    int flag;//用于标记

    for(int m=0;m<size-1;m++)//冒泡排序的关键代码,外部循环确定边界(即循环的最大值)
    {
        flag=0;
        for(int n=0;n<size-1-m;n++)
        {
            if(Array[n]>Array[n+1])//内部循环用于比较和交换数据
            {
                temp=Array[n];
                Array[n]=Array[n+1];
                Array[n+1]=temp;
                flag=1;//若发生交换,则标记置1
            }
        }
        if(flag==0)
        {
            break;//若没发生交换,则说明数列已有序
        }
    }
}

int main()
{
    int temp;//中间变量
    int a[10];
    cout<<"please input 10 numbers: "<<endl;
    for(int i=0;i<10;i++)//输入原始数组
    {
        cin>>a[i];
    }

    bubble_sort(a,sizeof(a)/sizeof(int));

    for(int j=0;j<10;j++)//输出排序后的数组
    {
        cout<<a[j]<<" ";
    }
    return 0;
}

1.用冒泡法对10个数排序

时间: 2024-10-09 23:58:26

1.用冒泡法对10个数排序的相关文章

用冒泡法对10个数排序

#include<iostream> #include<stdlib.h> using namespace std; int main() { int a[11]; int i, j, t; cout<<"input 10 nummbers:"<<endl; for(i=1;i<11;i++) { cin>>a[i]; } cout<<endl; for(j=1;j<11;j++) { for(i=1;

关于C语言冒泡法

关于冒泡法案例 !!!问题:用冒泡法对10个数排序(由小到大) 冒泡法的思想:将相邻两个数比较,将小的调到前头. #include <stdio.h>int main(){ int i,j,t,a[10]; for(i = 0;i < 10;i++){ scanf("%d",&a[i]); } printf("\n"); for(j=0;j < 9;j++){ for(i = 0;i < 9-j;i++){ if(a[i]>

冒泡法排序_c++实现

看完了郝斌老师的c语言视频,冒泡法排序,就试着写了.我觉得学习算法最重要的不是代码,而是它的原理. 代码: 1 /** 2 * Copyright (c) 1991 - 2016 Arvin Tang. 3 * All rights reserved. 4 * 5 * 文件名称:郝斌C语言视频教程_163_冒泡排序 6 * 简要描述:用冒泡法排序 7 * 8 * 当前版本:1.0 9 * 作 者: 10 * 完成日期:2016-1-9 11 * 修订说明: 12 * 13 * 取代版本: 14

第十三周项目4——数组的排序(冒泡法)

/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作    者:李晓凯 * 完成日期:2014年 11 月 29日 * 版 本 号:v1.0 * * 问题描述:降序排列数组的数并输出 * 输入描述: * 程序输出:降序排列数组的数并输出 */ #include <iostream> using namespace std; void bubble_sort(int a[],int n); vo

数组-03. 冒泡法排序

数组-03. 冒泡法排序(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 徐镜春(浙江大学) 将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们.通过一遍扫描,则最后一个元素必定是最大的元素.然后用同样的方法对前N-1个元素进行第二遍扫描.依此类推,最后只需处理两个元素,就完成了对N个数的排序. 本题要求对任意给定的K(<N),输出扫描完第K遍后的中间

C语言实现冒泡法排序

首先我们看冒泡法排序的原理,假设有一个包含6个数字的数组其思路为:每次将相邻两个数比较,将小的调到前面,如果有6个数:8,7,5,4,2,0.第一次先将最前面的两个数8和7对调(看下图).第二次将第二个数和第三个数(8和5)对调.....如此总计进行了5次,得到7-5-4-2-0-8的顺序,可以看到:最大的数8已经沉底,成为最下面的一个数,而小的数上升.经过第一轮(5次比较)后,得到了最大的数9.   然后进行第二轮的比较(见下图),对余下的7,5,4,2,0进行新一轮的比较,以便使次大的数沉底

C语言常见的排序方法——冒泡法、选择法、插入法

当我们要对C中一组数据进行排序是常见的排序方法有冒泡法.选择法.插入法 冒泡排序法(升序):假设一组数据a[0].a[1].a[2].a[3]...a[n],第一轮:先比较a[0]与a[1].a[1]与a[2]...a[i]与a[i+1]...a[n-1]与a[n]的大小,如果a[i]与a[i+1]不是升序(即a[i] > a[i+1]),那么就将a[i]与a[i+1]的值互换,第一轮过后,a[n]就是最大值:第二轮:运用第一轮同样的方法,比较a[0]与a[1].a[1]与a[2]...a[i]

对10个数进行排序

题目:对10个数进行排序 程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换. 1 package com.li.FiftyAlgorthm; 2 3 import java.util.Scanner; 4 5 /** 6 * 题目:对10个数进行排序 程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 7 * 下次类推,即用第二个元素与后8个进行比较,并进行交换. 8 * @aut

数组的排序,冒泡法,快速排序法

1.冒泡法排序 /* * 冒泡法排序 :在要排序的一组数中,对当前还未排好序的范围内的全部数,自左而右对相邻的两个数 * 相邻的两个数的交换 */ public void bubbleSort(int[] num) { int temp = 0; for(int i=0;i<num.length-1;i++){ for(int j=0;j<num.length-1-i;j++){ if(num[j]>num[j+1]){ temp=num[j]; num[j]=num[j+1]; num