#include void main() { int a[10]; int i,j,t; printf("input 10 numbers:n"); for(i=0;i
相信学过C语言的朋友都知道,在C语言中,常用的排序算法有:冒泡排序、快速排序、插入排序、选择排序、希尔排序、堆排序以及归并排序等等。就算没有用过,相信大家也有所耳闻。在这里呢,小编主要是想和大家一起来探讨探讨C语言的冒泡排序法,大家有什么好的建议可以在评论里给我留言,希望我们相互学习,共同进步。
材料/工具
Visual C++6.0软件
所谓冒泡排序法,就是对一组数字进行从大到小或者从小到大排序的一种算法。 1、具体方法是,相邻数值两两交换。从第一个数值开始,如果相邻两个数的排列顺序与我们的期望不同,则将两个数的位置进行交换(对调);如果其与我们的期望一致,则不
冒泡排序法基本原理
#include int main() { int a[10]; int i,j,t,temp; printf("请输入10个数:"); for (i=0;i
所谓冒泡排序法,就是对一组数字进行从大到小或者从小到大排序的一种算法。具体方法是,相邻数值两两交换。从第一个数值开始,如果相邻两个数的排列顺序与期望不同,则将两个数的位置进行交换(对调);如果其与期望一致,则不用交换。重复这样的过程,一直到最后没有数值需要交换,则排序完成。一般地,如果有N个数需要排序,则需要进行(N-1)趟起泡,我们以从小到大排序为例来看一下,具体情况如下图所示:
#include void main() { int a[10]; int i,j,t; printf("input 10 numbers:n"); for(i=0;i
C语言程序的实现
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将
首先,为了实现效果,先定义一组待排序的数列以及各个变量。具体情况如下图:
选择排序: void select_sort(int a[],int n) //传入数组的要排序的元素个数 {int i,j,min,t; for(i=0;i
算法的实现,具体情况如图:
先上选择法和冒泡法: 1.选择法 #include void main() { int i,j,min,temp; int a[10]; printf("请输入十个整数:"); for(i=0;i
运行结果显示。具体情况如图
这个应该到网上去搜索啊,不该在这问。冒泡排序的原理就是:(升序)依次比较相邻的2个数,把较大的值放在后面,使最后一个数变成数组中的最大值。循环这个过程,直到所有的数据都按这个规则排列好。此时,排序完毕。举例:3,2,5,7,1 (升序) 1. 3
扩展阅读,以下内容您可能还感兴趣。
C语言,冒泡排序法从大到小
#抄include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
int flag,temp,i,j,a[20];
srand((unsigned)time(NULL));
printf("before sorting...\n");
for(i=0;i<20;i++)
a[i]=rand()%1000;
for(i=0;i<20;i++)
printf("%4d",a[i]);
for(i=0;i<20;i++)
{
flag=0;
for(j=0;j<20-i-1;j++)
{
if(a[j]<a[j+1]) //数组袭越界了百,帮度你改了知一下道
{
temp=a[j],a[j]=a[j+1];a[j+1]=temp;
flag=1;}
}
if(flag==0)
break;
}
printf("after sorting...\n");
for(i=0;i<20;i++)
printf("%4d",a[i]);
}追问这样改之后排序后的第一个数就是乱码追答
我运行,怎么没出现乱码勒
C语言冒泡排序法代码是什么?
所谓冒泡排序法,就是对一组数字进行从大到小或者从小到大排序的一种算法。
1、具体方法是,相邻数值两两交换。从第一个数值开始,如果相邻两个数的排列顺序与我们百的期望不同,则将两个数的位置进行交换(对调);如果其与我们的期望一致,则不用交换。度重复这样的过程,一直到最后没有数值需要交换,则排序完成。具体情况如下图所示:
2、为了实现效果,我们得先定义一组待排序的数列以及各个变量。具体情况如下图:
3、算法知的实现,具体情况如图:
4、运行结果显示。具体情况如图:
5、按照上面的程序,在第五趟(i=5)起泡时,计算机不仅要对“1,5,6,4”两两进行比较并排序,还要对“7,8,9,13”进行两两比较并排序,而“7,8,9,13”在第四趟起泡时就已经排序好了,所以道再进行比较的话,就显得非常多余。图示如下:
6、在上面程序的基础上进行优化。具体情况如图所示:
7、优化后的输出结果。如图所示:
关于C语言冒泡排序法的问题
改好了:
#include &7a686964616fe4b893e5b19e31333238653264quot;stdio.h"
#include "stdlib.h"
void PrintArray(int a[],int n) //输出排序每一步的结果
{
int i;
for(i=0;i<n;i++) //通过循环输出元素
printf("%4d",a[i]);
printf("\n");
}
void BubbleSort(int a[],int n) //冒泡排序函数
{
int i,j,tmp; //tmp为中间变量
int flag; //标志变量,如果为0,说明不再交换顺序,排序结束
int count=0; //记录交换次数
printf("initial sorting:");
PrintArray(a,n); //输出排序前的序列
for(i=0;i<n;i++)
{
flag=0; //初始值为0
for(j=i+1;j<n;j++)
{if(a[i]>a[j]) //如果前面的数比后面的数大,进行交换
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
flag=1; //如果发生交换,标识变量设为1
}
}
count++; //记录已经发生的排序次数
printf("after %d sorting:",count);
PrintArray(a,n); //输出第count次的排序结果
if(flag==0) //没进行一次排序,flag都清0,若交换再发生,则排序完成
{
return;
}
}
}
void main() //主函数
{
int *a,n=5,i=0;
a=(int *)malloc(n*sizeof(int)); //为5个待排序的整型数开辟储存空间
for(i=0;i<n;i++)
scanf("%d",&a[i]); //输入待排序数
BubbleSort(a,n); //调用排序函数进行排序
free(a); //排序结束,释放储存空间
}
C语言中冒泡排序法(又称起泡排序法)得具体程序
冒泡法我是这样理解的,便抄于掌握和记忆。首先冒泡是n长度的数组开始的两位开始,逐位双双比较一直到最后两个,所以最外循环比较了n-1次。第一个数比较了以后袭就不比知了,从第二个开始,一直比较到数组末尾,于是内循环的起始位置不同,每次都是外侧i的值加0,也就是i。但结束的*和外道层循环是相同的。于是写法为for (i=0;i<n-1;i++)
{
for(j=i;j<n-1;j++)更多追问追答追答比较a[j]和a[j+1]}}根据大小需要,决定是否替换两个位置的值。
c语言冒泡排序法问题(新手)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define k 20 //错误在这里,你开始2,太小了,设e79fa5e9819331333332623264置大一点,就可以了
void InputName(char StudName[][8]){
int i;
for(i=0;i<8;i++){
gets(StudName[i]);
}
}
void OutputName(char StudName[][8]){
int i;
for(i=0;i<8;i++){
puts(StudName[i]);
}
}
void BubbleSort(char StudName[][8]){
char n[8];
int i,j;
for(i=0;i<8;i++){
for(j=0;j<8-i;j++){
if((strcmp(StudName[j],StudName[j+1])>0)){
strcpy(n,StudName[j]);
strcpy(StudName[j],StudName[j+1]);
strcpy(StudName[j+1],n);
}
}
}
}
void main(){
char StudName[k][8];
InputName(StudName);
BubbleSort(StudName);
OutputName(StudName);
}