修正了三个数字气泡排序的程序

发布于 教育 2024-08-14
10个回答
  1. 匿名用户2024-02-01

    这不是冒泡,让我们给你看一个。 足以让你看到:

    一点点改进。

    #include

    void main()

    void shift(int *x);

    int a[10],*p,i,m;

    p=a;for(i=0;i<10;i++)scanf("%d", p++) 输入数字 10。

    scanf("%d",&m);输入要移动的位数。

    p=a;shift(p);

    for(i=0;i<10;i++,p++)printf("%d",*p);输出这 10 位数字。

    void shift(int *x)

    int m,i,j,t;

    for (i=0;i=0;j--) *从第1位到第9位。

    x+j+1)=*(x+j);每个位向后移动一位 * x=t; 将第 10 个位置移动到第一个位置。

  2. 匿名用户2024-01-31

    鼓泡分选步骤如下:

    #include

    int main()

    int a[10]=;

    int i=0,j=0,t=0;

    for(i=0;i<10;i++)

    scanf("%d",&a[i]);

    for(i=0;i<10;i++)

    for(j=0;j<10-i;j++)

    return 0;}

    任意输入十个数据,程序运行结果:

  3. 匿名用户2024-01-30

    四遍处理(非修饰冒泡测序)。

    第一次交换是 2 次。

    第一遍:22 小于 94,不交换。

    94到17是大交换得到序列22,17,94,125,6394小于125不交换。

    125 大于 63 得到序列 22、17、94、63、125 秒:

    22 到 17 兑换 17、22、94、63,12522 小于 94 不兑换。

    94 大于 63,序列 17、22、63、94、125 第三次交换:很明显,序列已经按顺序排列,不会有交换。

    否则,将有第四次比较,同样没有交换。

  4. 匿名用户2024-01-29

    共10次加工。

    第一次 4 个,第二次 3 个,第三次 2 个,第四次 1 个

    每次比较,我交换的金额都超过一定数量。

  5. 匿名用户2024-01-28

    冒泡排序是一种通过以时间换空间进行排序的方法,在最坏的情况下,顺序的排列变为相反,或者相反顺序的数字序列变为顺序。 在这种情况下,每次比较都需要交换运算。 例如,数字 5 4 3 2 1 的序列按冒泡升序排列,第一个大循环从第一个数字 (5) 开始,到倒数第二个数字 (2) 结束。

    先比较 5 和 4,4 小于 5,交换位置变为 4 5 3 2 1;比较 5 和 3,3 小于 5,交换位置变为 4 3 5 2 1 ......最后,比较 5 和 1,1 小于 5,交换位置变为 4 3 2 1 5。 此时,总共进行了 4 次比较和交换操作,最后 1 个数字成为序列中最大的数字。

    第二个循环从第一个数字 (4) 开始,到倒数第三个数字 (2) 结束。 进行了 3 次比较交换操作。

    所以比较的总数是 4 + 3 + 2 + 1 = 10 次。

    对于一系列 n 位数字,比较次数为 (n-1) +n-2) +1 = n * n - 1) 2,这给出了最大比较次数。

    O(n 2) 表示复杂度的数量级。 例如,如果 n = 10000,则 n(n-1) 2 = (n 2 - n) 2 = (100000000 - 10000) 2,与 10 8 相比,10000 可以忽略不计,因此计算的总数约为 * n 2。 O(n 2) 用于表示其数量级(忽略前面的系数)。

  6. 匿名用户2024-01-27

    内层循环通过程序并直接结束,外层只循环一次。

  7. 匿名用户2024-01-26

    这样就容易理解了,最好发现第一个内循环没有交换,说明已经安排好了,不需要进行第二次,最好是o(n),程序会放一个标志。

  8. 匿名用户2024-01-25

    我们可以优化气泡来考虑以下特殊情况,如果原始数据已经下单,计算机不知道它已经下单了。 所以,仍然需要比较,如果没有发生数据交换,那么你就知道它已经有序了,你可以做到。 因此,第二次比较还是必要的,第三次和第五次比较是没有必要的。

    我们设置一个布尔变量 bo 来记录是否存在交换。 值 false 表示交换是在行程中进行的,而 true 则不表示。 **下面:

    i:=1; repeat bo:=true; for j:

    1 to n-i do if a[j]=temp; bo:=false; end; inc(i); until bo;所以他的复杂性变成了o(n)! 你看,我玩了这么多,让我们给出一个满意的答案!!

  9. 匿名用户2024-01-24

    46<79 79 位置不变。

    79>56 79 倒退。

    所以答案是 46 56 64 38 40 79 43 84,现在 79 排在第 6 位。

    从 2 点开始

    所以答案是最终沉入它的底部 4 分之一。

  10. 匿名用户2024-01-23

    冒泡排序是一种将一组数字逐个排序的方法,具体分为升序和降序。

    以升序为例。

    每次行程的任务是从一组数字的第一个数字开始,然后依次比较两个相邻数字的大小。 既然是升序,那么经过比较,如果前者大于后者,那么两者互换位置。 就这样一直持续下去。

    在这种情况下,第一次行程将把最大的数字放在最后。

    而且每次比较行程,都会排除已经生成的结果,比如第二次行程,就不比较最后一个数字了(已经是最大的了,当然比较一下就好了,只是浪费时间); 在第三次旅行中,最后两个数字将不再比较......

    每个行程在当前范围的末尾对最大数字进行排名。

    这个循环继续,每次行程都会抛出当前范围内的最大数字。 排序完成。

    下面是升序排序的示例:

    对于这组数字,第一次跳闸,10比5,10大于5,所以掉仓(5、10、3、11、9),10和3比较,10>3,所以掉期仓位(5、3、10、11、9)、10和11比较,不掉仓; 11与9比较,交换位置(5、3、10、9、11),第一次行程结束;

    第二次旅行,因为 11 已经是最大的,所以只剩下了; 5>3,所以交换仓位(3,5,10,9); 5<10、无需互换仓位; 10>9,交换位置(3,5,9,10),第二次行程结束。

    第三次旅行,只剩下3<5人,没有必要交换位置; 5<9,无需交换位置,第三趟行程结束。

    第四次行程,左边,3<5,无需交换位置,第四次行程结束。

    这时,由于只剩下两个数字,这次旅行将两个数字较高的那个放在了第二位,所以循环到此结束。

    事实证明。 在这个过程中,每次行程都会把两个相邻数字中较大的一个替换到后面,也就是说,在每次行程中,最大的数字都会被替换到最后,就像一个气泡浮出水面,越来越大,当它从水里出来时,它会是最大的。 这就是为什么它被称为冒泡排序。

相关回答
10个回答2024-08-14

一个,555 6666=

二, 5555 66666 = >>>More

16个回答2024-08-14

人形走样,玩三字127,1像人身体挺直,2像两条腿走路,7像人弯腰时的姿势,如果他个人的看法是正确的。

9个回答2024-08-14

芳草:单相思可以250,饱满:单方面金合欢无处不在,因为113,天涯:相思不只有443 >>>More

57个回答2024-08-14

如果回过头来,应该是747号,不是常说的波音747吗? 如果你转乘飞机,它是747。

8个回答2024-08-14

左右手拉手玩三个数字:猜数字应该是,数字...... 因为: >>>More