请编程实现一个冒泡排序算法?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

请编程实现一个冒泡排序算法?

知与谁同 2018-07-16 20:02:47 2205
请编程实现一个冒泡排序算法?
搜索推荐
分享到
取消 提交回答
全部回答(4)
  • 行者武松
    2019-07-17 22:49:32
    算法思想简单描述:

    在要排序的一组数中,对当前还未排好序的范围内的全部数,自上

    而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较

    小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要

    求相反时,就将它们互换。

    下面是一种改进的冒泡算法,它记录了每一遍扫描后最后下沉数的

    位置k,这样可以减少外层循环扫描的次数。

    冒泡排序是稳定的。算法时间复杂度O(n^2)

    算法实现:

    /*
    功能:冒泡排序
    输入:数组名称(也就是数组首地址)、数组中元素个数
    */

    void bubble_sort(int *x, int n)

    {

    int j, k, h, t;

    for (h=n-1; h>0; h=k) /*循环到没有比较范围*/

    {

    for (j=0, k=0; j<h; j++) /*每次预置k=0,循环扫描后更新k*/

    {

    if (*(x+j) > *(x+j+1)) /*大的放在后面,小的放到前面*/

    {

    t = *(x+j);

    *(x+j) = *(x+j+1);

    *(x+j+1) = t; /*完成交换*/

    k = j; /*保存最后下沉的位置。这样k后面的都是排序排好了的。*/

    }

    }

    }

    }
    0 0
  • 我是管理员
    2019-07-17 22:49:32
    冒泡排序代码
    AAuto
    bubble_sort = function(array){
    var temp;
    for( i=1;#array ){
    //i前面的已经是最小的数,并排序好了
    for(j=#array;i+1;-1){
    //挨个比较
    if(array[j]<array[j-1]){
    //小的总是往前排
    bubble = array[j]
    array[j] = array[j-1];
    array[j-1] = bubble;
    }
    }
    }
    }
    io.print("----------------")
    io.print("冒泡排序( 交换类换排序 )")
    io.print("----------------")
    array ={2;46;5;17;1;2;3;99;12;56;66;21};
    bubble_sort(array,1,#array)
    //输出结果
    for(i=1;#array;1){
    io.print( array[i] )
    }
    C
    void bubble_sort(int *x, int n)
    {
    int j, k, h, t;
    for (h=n-1; h>0; h=k) /*循环到没有比较范围*/
    {
    for (j=0, k=0; j<h; j++) /*每次预置k=0,循环扫描后更新k*/
    {
    if (*(x+j) > *(x+j+1)) /*大的放在后面,小的放到前面*/
    {
    t = *(x+j);
    *(x+j) = *(x+j+1);
    *(x+j+1) = t; /*完成交换*/
    k = j; /*保存最后下沉的位置。这样k后面的都是排序排好了的。*/
    }
    }
    }
    }
    C++
    #include <iostream>
    #define LEN 9
    using namespace std;
    int main()
    {
    int nArray[LEN];
    for(int i=0;i<LEN;i++)nArray[i]=LEN-i;
    cout<<"原始数据为:"<<endl;
    for(int i=0;i<LEN;i++)cout<<nArray[i]<<" ";
    cout<<endl;
    //开始冒泡
    {
    int temp;
    for(int i=LEN-1;i>0;i--)
    for(int j=0;j<i;j++)
    {
    if(nArray[j]>nArray[j+1])
    {
    temp=nArray[j];
    nArray[j]=nArray[j+1];
    nArray[j+1]=temp;
    }
    }
    }
    //结束冒泡
    cout<<"排序结果:"<<endl;
    for(int i=0;i<LEN;i++)cout<<nArray[i]<<" ";
    return 0;
    }
    0 0
  • boxti
    2019-07-17 22:49:32
    一个标准的简单冒泡排序算法:
    void bubble_sort(int a[], int n)
    {
    int i, j, temp;
    for (i = 0; i < n-1; i++)
    for (j = 0; j < n-1-i; j++)
    {
    if(a[j] > a[j+1])
    {
    temp = a[j];
    a[j] = a[j+1];
    a[j+1] = temp;
    }
    }
    }
    0 0
  • 一键天涯
    2019-07-17 22:49:31
    int [] array = new int
    ;
    int temp = 0 ;
    for (int i = 0 ; i < array.Length - 1 ; i++)
    {
    for (int j = i + 1 ; j < array.Length ; j++)
    {
    if (array[j] < array[i])
    {
    temp = array[i] ;
    array[i] = array[j] ;
    array[j] = temp ;
    }
    }
    }
    0 0
添加回答
人工智能
使用钉钉扫一扫加入圈子
+ 订阅

了解行业+人工智能最先进的技术和实践,参与行业+人工智能实践项目

推荐文章
相似问题