C语⾔:冒泡排序法
冒泡排序法
排序的规律有两种:⼀种是升序,从⼩到⼤;另⼀种是降序,从⼤到⼩。排序⽅法是⼀种很重要的,基本的算法。
冒泡法的基本思路是:每次将相邻的两个数⽐较,将⼩的调到前⾯,让最⼤的元素不断地往后移。
例:有6个数:9,8,5,4,2,0
第⼀次对调情况如下图,可以看到将最⼤的数字9调到了最后,经过了1趟(共5次⽐较和交换)已得到最⼤的数字9;
然后进⾏第⼆趟⽐较,对余下的5个数进⾏⼀轮新的⽐较,进⾏了4次⽐较和交换。
若有n个数,则要进⾏n-1趟⽐较,在第1趟⽐较中要进⾏n-1次两两⽐较,在第j趟⽐较中要进⾏n-j次两两⽐较
代码如下:
#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)
int main()
{
int a[10];
int i, j, t;
printf("Input 10 numbers:\n");
for(i =0; i <10; i++)
scanf("%d",&a[i]);
printf("\n");
for(j =0; j <9; j++)//进⾏9次循环,实现9趟⽐较
for(i =0; i <9- j; i++)//在每⼀趟中进⾏9-j次⽐较
if(a[i]>a[i +1]){//相邻两个数⽐较
t = a[i];
a[i]= a[i +1];
a[i +1]= t;
}
printf("After:\n");
for(i =0; i <10; i++)
printf("%d", a[i]);
printf("\n");
system("pause");
return0;
}
优化代码:
#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)
void bubble_sort(int arr[],int sz)//sz为数组arr的元素个数
{
int i =0;
//进⾏N-1趟⽐较
for(i =0; i < sz -1; i++){
//每⼀趟⽐较前n-1-i个,已排序好的最后⼀个元素不⽤再进⾏排序int j =0;
for(j =0; j < sz -1- i; j++){
if(arr[j]>arr[j +1]){
int temp = arr[j];
arr[j]= arr[j +1];
arr[j +1]= temp;
}
}
}
}
int main()
{
int arr[]={3,1,7,5,8,9,68,2,4,6};
int sz =sizeof(arr)/sizeof(arr[0]);
bubble_sort(arr, sz);
for(int i =0; i < sz; i++){
printf("%d ", arr[i]);
c语言的冒泡排序算法}
system("pause");
return0;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。