C语言之冒泡排序

假设要对含有n个数的序列进行升序排列,冒泡排序算法步骤是:

1、从存放序列的数组中的第一个元素开始到最后一个元素,依次对相邻两数进行比较,若前者大后者小,则交换两数的位置;

2、第1趟结束后,最大数就存放到数组的最后一个元素里了,然后从第一个元素开始到倒数第二个元素,依次对相邻两数进行比较,若前者大后者小,则交换两数的位置;

3、重复步骤1 n-1趟,每趟比前一趟少比较一次,即可完成所求。

例1、随机产生10个100以内的数,将其用冒泡法按升序排列后输出。

#include <stdio.h>
#include <stdlib.h>
#define n 10
int main(void)
{
	 int a[n],i,j,t;
	 printf("随机产生10个100以内的数:\n");
	 for(i=0;i<n;i++)
	 {
	   a[i] = rand()%100;
	   printf("%d\n",a[i]);
	 }
	 printf("输出:\n");
	  for(j=1;j<=n-1;j++)
	  {     /*n个数处理n-1趟*/
	    for(i=0;i<=n-1-j;i++)
		{    /*每趟比前一趟少比较一次*/
	      if(a[i]>a[i+1])
		  {
		    t=a[i];
		    a[i]=a[i+1];
		    a[i+1]=t;
		  }
		}
	 }
	for(i=0;i<n;i++)
	{
		printf("%d\n",a[i]);
	}
	return 0 ;
}

运行结果:

时间: 2024-08-25 14:42:38

C语言之冒泡排序的相关文章

C语言实现冒泡排序-整数排序

我一直觉得排序算法挺重要的,但是却没有深入的去理解它: 没有深入理解就无法用代码将它实现: 在腾讯的在线模拟考试中就有一题问到冒泡排序: 我几乎是傻眼了!我知道这样的问题是最基础的: 无论过去怎样现在要全面深入的理解所有排序算法: 让我们从最简单的冒泡开始吧! Problem 你想要将(4,3,5,1,2)排序成(1,2,3,4,5) 你决定使用最简单的冒泡排序: Solution 首先,假定你知道C语言的基本语法. vim bubble_sort.c 打开编辑器后,你不要着急写代码: 想想自己

C语言之冒泡排序算法

一.什么是冒泡排序?冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越大的元素会经由交换慢慢"浮"到数列的顶端,故名.二.冒泡排序的原理   冒泡排序原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头

C语言-冒泡排序

int main() { //定义一个数组 int a[]={3,5,1,4,9}; //冒泡排序 for (int i=0; i<5-1; i++) { for (int j=0; j<5-1-i; j++) { if (a[j]>a[j+1]) { int t=a[j+1]; a[j+1]=a[j]; a[j]=t; } } } for (int i=0; i<5; i++) { printf("%d\t",a[i]); } printf("\n&

C语言:“冒泡排序”与“二分法”

1.冒泡排序: what:将元素进行两两比较,大的(小的)向后排. when:数组中有多个元素,需要进行比较排序比较的时候使用. how:N个数字来排队,两两比较小靠前.(升序) 外层循环:N-1(控制比较的轮数) 内层循环:N-1-i(控制每轮比较的的次数,i代表外层循环变量) for example: int num[5];int i,k,j,temp;for(i=0;i<5;i++){printf("请输入5个元素\n");scanf("%d",&

数据结构之---C语言实现冒泡排序

版本一: 马上更新....请等待. 版本二: //冒泡排序 //杨鑫 #include <stdio.h> #include <stdlib.h> void BubbleSort(int a[], int length) { int j = 0, i = 0, temp = 0; for(i = 0; i < length; i++) { for(j = i + 1; j < length; j++) { if(a[i] > a[j]) { temp = a[i]

Go语言之冒泡排序

1 package main //main函数 2 import "fmt" //相当于#include 3 func main() { 4 ar := [10]int{9, 8, 6, 4, 2, 7, 1, 3, 0, 5} 5 num := len(ar) //:=自动匹配变量类型 6 for i := 0; i < num; i++ { //花括号{必须在这一行 if也一样 7 for j := i + 1; j < num; j++ { 8 if ar[i] &l

【C语言】冒泡排序

1 #include<stdio.h> 2 int main() 3 { 4 int arr[]={99,94,95,93,92,91,90,88,97,89}; 5 int i,j; 6 for(i=0;i<10;i++) 7 { 8 if(i!=9) 9 printf("%d,",arr[i]); 10 else 11 printf("%d",arr[i]); 12 } 13 for(i=8;i>=0;i--) 14 { 15 for(j

一起talk C栗子吧(第二十六回:C语言实例--冒泡排序)

各位看官们,大家好,上一回中咱们说的是二分查找的例子,这一回咱们说的例子是:冒泡排序.闲话休 提,言归正转.让我们一起talk C栗子吧! 我们先来说说什么是排序,所谓的排序就是把容器中的元素依据一定的规则进行排列.我们还是像以前一 样举个日常生活中的例子来说明:现在学校里基本上都在搞军训,我想大家也参加过军训,在军训前肯定 会让大家排队,教官会让大家依据自己的身高从低到高进行排队,这样排出来的队列比较整齐.在排队的 过程中就使用了排序,参加军训的学生就是容器中元素,排序的规则就是教官定的:依据

C语言实现冒泡排序法和选择排序法代码参考

为了易用,我编写排序函数,这和直接在主调函数中用是差不多的. 我认为选择排序法更好理解!请注意 i 和 j ,在写代码时别弄错了,不然很难找到错误! 冒泡排序法: void sort(int * ar,int k) //ar指向数组名,k是元素个数 { int i,j,temp; for(i = 0; i < k - 1; i++){ //比较k-1趟就可以了 for(j = 0; j < k - i -1; j++){ if(ar[j] > ar[j + 1]){ temp = ar[