精华内容
下载资源
问答
  • 数据结构冒泡排序

    2019-07-06 10:53:45
    C++版本,面向对象 数据结构冒泡排序 源代码 详细的注释说明 需要用Visual Studio 2013以上版本打开
  • 数据结构 冒泡排序

    2019-10-09 01:20:49
    这是一趟冒泡,将最小的元素交换到待排序列的第一个位置(最小元素如同气泡一样逐渐往上“漂浮”直至“水面”,这是冒泡排序名字的由来)。下一趟冒泡时,前一趟确定的最小元素不再参与比较,待排序列减少了一个元素...

      基本思想:假设待排序表长为n,从后往前(或从前往后)两两比较相邻元素,如果是逆序(A[i-1] > A[i]),那么交换这两个元素,直到序列比较完。这是一趟冒泡,将最小的元素交换到待排序列的第一个位置(最小元素如同气泡一样逐渐往上“漂浮”直至“水面”,这是冒泡排序名字的由来)。下一趟冒泡时,前一趟确定的最小元素不再参与比较,待排序列减少了一个元素,每趟冒泡把待排序列中的最小元素放到了最终位置上,最多做n-1趟冒泡就能完成排序任务。冒泡排序产生的有序子序列是全局有序的,因为有序子序列中的所有元素小于或大于无序子序列中的所有元素,每一趟排序都会将一个元素放到最终位置上。

      

     

     1 public class BubbleSort {
     2     public static void bubbleSort(int[] arr) {
     3         if (arr == null || arr.length <= 1) {
     4             return;
     5         }
     6         
     7         int maxIndex = arr.length - 1;
     8         for (int i = 0; i < maxIndex; i++) {
     9             // 本趟冒泡是否发生交换的标志
    10             boolean isSwap = false;
    11             // 一趟冒泡过程
    12             for (int j = maxIndex; j > i; j--) {
    13                 // 如果相邻元素出现逆序
    14                 if (arr[j - 1] > arr[j]) {
    15                     // 交换相邻元素
    16                     int temp = arr[j - 1];
    17                     arr[j - 1] = arr[j];
    18                     arr[j] = temp;
    19                     
    20                     isSwap = true;
    21                 }
    22             }
    23             
    24             // 如果本趟冒泡没有发生交换,说明表已经有序
    25             if (!isSwap) {
    26                 return;
    27             }
    28         }
    29     }
    30     
    31     public static void main(String[] args) {
    32         int[] arr = {1, -1, 3, 2, -3};
    33         BubbleSort.bubbleSort(arr);
    34         for (int item : arr) {
    35             System.out.print(" " + item);
    36         }
    37     }
    38 }

      输出结果:

     -3 -1 1 2 3

      冒泡排序性能分析:

      空间复杂度:仅使用了常数个辅助单元,空间复杂度为O(1)。

      时间复杂度:当初始序列有序时,第一趟冒泡后发现没有交换元素,跳出循环,比较次数为n-1,移动次数为0,即最好情况下的时间复杂度为O(n)。当初始序列逆序时,需要n-1趟排序,第i趟排序要进行n-i次元素比较,而且每次比较后移动元素3次来交换元素。在这种情况下,

      

      所以,最好情况下时间复杂度为O(n),最坏情况下时间复杂度为O(n2),平均情况下时间复杂度为O(n2)。

      稳定性:因为当i>j且A[i]=A[j]时,不会交换元素,所以冒泡排序是稳定的。

     

      参考资料

      《2017年数据结构联考复习指导》 P287

      图解排序算法(一)之3种简单排序(选择,冒泡,直接插入)

    转载于:https://www.cnblogs.com/WJQ2017/p/8350166.html

    展开全文
  • 数据结构冒泡排序算法 数据结构冒泡排序算法
  • 主要介绍了java 数据结构 冒泡排序的相关资料,并附实例代码,有需要的小伙伴可以参考下
  • 数据结构数据结构课程设计源代码,实现冒泡排序的源代码
  • 数据结构排序算法中的冒泡排序,是我们学院学习计算机语言室接触到的第一个算法,可以说是最基础的一个排序算法
  • *冒泡排序 *改进的冒泡排序算法 (优点可以降低时间复杂度) */ #include<stdio.h> #include<stdlib.h> void bubble_sort(int *s,int n);//简单的冒泡排序函数 void up_bubblesort(int *s,int n);//改进...

    /*
    *交换排序算法
    *冒泡排序
    *改进的冒泡排序算法 (优点可以降低时间复杂度)
    */

    #include<stdio.h>
    #include<stdlib.h>
    void bubble_sort(int *s,int n);//简单的冒泡排序函数
    void up_bubblesort(int *s,int n);//改进的冒泡排序  可以降低时间复杂度
    void main()
    {
    
        int m;
        int i;
        int n[100];
        printf("请输入数据的个数:\n");
        scanf("%d",&m);
        printf("请依次输入数据:\n");
        for(i=0;i<m;i++)
            scanf("%d",&n[i]);
            printf("\t\t========简单的冒泡排序算法的结果为========\n");
            bubble_sort(n,m);//递减排序
              for(i=0;i<m;i++)
                printf("%d\t",n[i]);
                printf("\n");
                  printf("\t\t========改进的冒泡排序算法的结果为========\n");
                  up_bubblesort(n,m);//递增排序
                  for(i=0;i<m;i++)
                    printf("%d\t",n[i]);
                      printf("\n");
    
    
    }
    void bubble_sort(int *s,int n)
    {
        int i,j;//循环变量
        int t;
        //递减排序
          for(i=0;i<n-1;i++)
            for(j=0;j<n-i-1;j++)
          {
              if(s[j]<s[j+1])
              {
                  t=s[j];
                  s[j]=s[j+1];
                  s[j+1]=t;//交换数据
              }
          }
    }
    void up_bubblesort(int *s,int n)//递增排序
    {
        int i;
        int t;
        i=n-1;//控制循环次数的变量
        int j;
       int flag;//循环结束的标志
        while(flag)
        {
            flag=0;
            for(j=0;j<n;j++)
                if(s[j]>s[j+1])
            {
                t=s[j];
                s[j]=s[j+1];
                s[j+1]=t;
                flag=1;//代表for循环继续进行 while循环结束代表序列已经有序
    
            }//循环次数  和每次遍历的次数的关系是 循环次数比每次遍历的次数大一
    
        }
    }
    
    
    展开全文
  • 优化2:当一个排序数组的前半部分是乱序,后半部分的顺序是有序的,没必要对后半部分进行排序,此次就可以将结尾的角标移至乱序部分的最后一个的位置上,从而减少循环总量。例如如下案例:我们...

    转自:https://www.cnblogs.com/jingmoxukong/p/4302718.html,如有侵权,马上删除!!

    优化1:见上述链接,使用Boolean判断是否还需要交换位置,从而尽早结束循环。

    优化2:当一个排序数组的前半部分是乱序,后半部分的顺序是有序的,没必要对后半部分进行排序,此次就可以将结尾的角标移至乱序部分的最后一个的位置上,从而减少循环总量。例如如下案例:我们只需要对3 2 4 1 进行排序即可,不需要全部循环,因此引入此次优化。

    3 2 4 1 5 6 7 8 9 

    优化思路:首先进行一次for循环,找到需要排序的最后一次的位置交换的角标,然后将循环的最大值改为该角标,从而减少循环的总量,如下图所示。

    代码如下:

    展开全文
  • 冒泡排序可以对一组数据进行从小到大或者从大到小进行排序 下面对数据从小到大的冒泡排序进行介绍: 图示: 小的数值在左面,大的数值在右面,就像水中冒泡一样,越来越大。 以4个数值5,3,6,2进行排序为例介绍...
  • java的冒泡排序是一种简单的排序规则   冒泡排序的原理:   比较两个相邻的数,首先将最大的排在第一个,第二次比较第二个 ,此后一样;  针对所有的元素重复以上的步骤,除了最后一个     例题;将int...
  • 冒泡排序 循环比较集合元素 如果两者大小不符合要排序顺序,交换两者位置 实例 有数组 [1,5,2,3,7,3,5,9,2] 进行从大到小排序 循环数组,和数组中数据依次比较,用int[0]当前的值和数组中数据进行比较,如果小于int...
  • 用函数实现冒泡排序,并输出每趟排序的结果(要求当一趟冒泡过程中不再有数据交换,则排序结束) Input 第一行:键盘输入待排序关键的个数n 第二行:输入n个待排序关键字,用空格分隔数据 Output 每行输出每趟排序...
  • 冒泡是比较类排序算法,时间复杂度最好、最坏、平均都是o(n^2),通过一次次比较找到一个最大或最小的数,确定该数在数组中的位置,就相当于一个筛子,一次捞出一个最值。 算法描述: 比较相邻的元素。如果第一...
  • 数据结构冒泡排序

    2017-08-23 10:35:40
    数据结构冒泡排序
  • 呢1冒泡排序的动画演示2冒泡排序的原理3冒泡排序的算法设计数据结构冒泡排序 学习提纲动画演示动画演示排序的过程有何规律数据结构冒泡排序2 原 理 每两个相邻的数据进行比较满足某一种条件(大于或者小于)就交换否则...
  • 数据结构-排序-冒泡排序 1.算法思想 冒泡排序的思想: 2.算法复杂度 执行时间: 附加空间: 是否是稳定的排序方法: 3.算法实现 运行截图 欢迎大家关注我的博客:breeziness123 转载说明...
  • 数据结构 综合排序 冒泡排序 直接插入排序 快速排序 希尔排序,完整的代码,有每种排序时间的比较
  • 数据结构 严蔚敏 冒泡排序
  • 数据结构2 冒泡排序

    2019-11-18 16:40:32
    数据结构--冒泡排序冒泡排序数据结构的第一个算法,,也是最简单的一个排序算法。 冒泡排序就是把小的元素往前调或者把大的元素往后调。相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个...
  • 数据结构—排序之冒泡排序 注:此文档《数据结构与算法之美》的课上学习和自习总结的。属于原创文章,如发现错误,请指出 系列文章 什么是数据结构?什么是算法? 数据结构—数组 数据结构—链表 数据结构—栈 数据...
  • 冒泡排序 简介: 冒泡排序属于交换排序的一种。 交换排序就是根据序列中两个元素关键字的比较结果来对换这两个记录在序列中的位置。交换排序的算法有很多,着重需要掌握的有冒泡排序和快速排序。 基本思想: 长为n的...
  • 文章目录一、Golang数据结构-冒泡排序1.基本介绍二、使用步骤1.编写冒泡排序的函数2.编写主函数测试三、运行结果 一、Golang数据结构-冒泡排序 1.基本介绍 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,523
精华内容 3,409
关键字:

数据结构冒泡排序

数据结构 订阅