C语言冒泡排序法代码

C语言冒泡排序法代码,第1张

冒泡排序是排序算法的一种,思路清晰,代码简洁,常被用在大学生计算机课程中。“冒泡”这个名字的由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。这里以从小到大排序为例进行讲解。基本思想及举例说明

冒泡排序的基本思想就是不断比较相邻的两个数,让较大的元素不断地往后移。经过一轮比较就,选出最大的数;经过第2轮比较,就选出次大的数,以此类推。下面以对 3 2 4 1 进行冒泡排序说明。

1.这个算法用rand函数产生新的要排序的数据,与已有的有序数列中的数据依次比较,如果遇到比他大的数据,就从该数据开始,一直交换到末尾,达到一个插入的效果。从而形成有序的数列。

2.此外,只用rand函数并不能达到真正随机的效果。如果要实现真正随机的效果,还要配合srand函数才行。

3.具体代码如下:#include "stdio.h"#include "stdlib.h"void main(){int a[10],temp,rprintf("请输入一个种子\n")scanf("%d",&r)srand(r)for(int i=0i<9i++) 。

对拥有 n 个元素的数组 R[n] 进行 n-1 轮比较。

第一轮,逐个比较 (R[1], R[2]),  (R[2], R[3]),  (R[3], R[4]),  …….  (R[N-1], R[N]),最大的元素被移动到 R[n] 上。

第二轮,逐个比较 (R[1], R[2]),  (R[2], R[3]),  (R[3], R[4]),  …….  (R[N-2], R[N-1]),次大的元素被移动到 R[n-1] 上。

。。。。。。

以此类推,直到整个数组从小到大排序。

具体的代码实现如下所示:

#include <stdio.h>

int main(){

int nums[10] = {4, 5, 2, 10, 7, 1, 8, 3, 6, 9}

int i, j, temp

//冒泡排序算法:进行 n-1 轮比较

for(i=0i<10-1i++){

//每一轮比较前 n-1-i 个,也就是说,已经排序好的最后 i 个不用比较

for(j=0j<10-1-ij++){

if(nums[j] >nums[j+1]){

temp = nums[j]

nums[j] = nums[j+1]

nums[j+1] = temp

}

}

}

//输出排序后的数组

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

{

printf("%d ", nums[i])

}

printf("\n")

return 0

}

按照你的要求编写的C语言冒泡排序的程序如下

#include<stdio.h>

int main(){

 int i,j,k,T,n,tmp

 scanf("%d",&T)

 for(i=0i<Ti++){

  scanf("%d",&n)

  int a[n]

  for(j=0j<nj++){

   scanf("%d",&a[j])

  }

  for(j=0j<n-1j++){

   for(k=0k<n-1-jk++){

    if(a[k]>a[k+1]){

     tmp=a[k]

     a[k]=a[k+1]

     a[k+1]=tmp

    }

   }

   for(k=0k<nk++){

    printf("%d ",a[k])

   }

   printf("\n")

  }

 }

 return 0

}

运行结果

输入 2

输入 5 10 4 43 1 2

输出 

4 10 1 2 43

4 1 2 10 43

1 2 4 10 43

1 2 4 10 43

输入 10 20 123 12 2 434 54 2 45 23 -10

输出

20 12 2 123 54 2 45 23 -10 434

12 2 20 54 2 45 23 -10 123 434

2 12 20 2 45 23 -10 54 123 434

2 12 2 20 23 -10 45 54 123 434

2 2 12 20 -10 23 45 54 123 434

2 2 12 -10 20 23 45 54 123 434

2 2 -10 12 20 23 45 54 123 434

2 -10 2 12 20 23 45 54 123 434

-10 2 2 12 20 23 45 54 123 434


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11116947.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存