c语言if冒泡排序
#include<stdio.h>
intmain(){
intnumber[10]={95,45,15,78,84,51,24,12,34,23};
for(int j=0;j< 9;j++)
for(int i=0;i< 9 -j;i++) {
if(a[i]>a[i+1]) {
int temp=a[i];a[i]=a[i+1];
a[i+1]=temp; }
}
for(int i=0;i< 10;i++){
printf(“%d”,a[i]); }
}
插入排序
已知一组升序排列数据a[1]、a[2]、……a[n],一组无序数据b[1]、b[2]、……b[m],需将二者合并成一个升序数列。
首先比较b[1]与a[1]的值,若b[1]大于a[1],则跳过,比较b[1]与a[2]的值,若b[1]仍然大于a[2],则继续跳过,直到b[1]小于a数组中某一数据a[x],则将a[x]~a[n]分别向后移动一位,将b[1]插入到原来a[x]的位置这就完成了b[1]的插入。
b[2]~b[m]用相同方法插入。
快速排序
快速排序是大家已知的常用排序算法中最快的排序方法。已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先任取数据a[x]作为基准。
比较a[x]与其它数据并排序,使a[x]排在数据的第k位,并且使a[1]~a[k-1]中的每一个数据<a[x],a[k+1]~a[n]中的每一个数据>a[x],然后采用分治的策略分别对a[1]~a[k-1]和a[k+1]~a[n]两组数据进行快速排序。
希尔排序
已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。
首先取一增量d(d<n),将a[1]、a[1+d]、a[1+2d]……列为第一组,a[2]、a[2+d]、a[2+2d]……列为第二组……,a[d]、a[2d]、a[3d]……列为最后一组以次类推,在各组内用插入排序,然后取d'<d,重复上述操作,直到d=1。
2. C语言冒泡排序法代码
冒泡排序是排序算法的一种,思路清晰,代码简洁,常被用在大学生计算机课程中。“冒泡”这个名字的由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。这里以从小到大排序为例进行讲解。基本思想及举例说明
冒泡排序的基本思想就是不断比较相邻的两个数,让较大的元素不断地往后移。经过一轮比较就,选出最大的数;经过第2轮比较,就选出次大的数,以此类推。下面以对 3 2 4 1 进行冒泡排序说明。
3. C语言 冒泡排序法
对你需求有点疑问:
1、不要固定数=>理解为:总排序个数是可变的,比如5个数排序,600个数排序。
2、输入一个排序一次=>理解为:每输入一个数,这个数就加到要被排序的那组数中,然后对那组数进行一次“冒泡排序”。比如:
输入1;此时序列为:1;
输入8;此时序列为:1、8;
输入5;此时序列为:1、5、8;
但是这个需求与冒泡排序算法可能有点冲突。因为你要求每次输入一个数就进行了一次排序,那么下次输入的数,是要插入已经排序好的序列中,这已经没有了“冒泡”的过程,倒变成了插入排序...
3、从后面排序=>不理解:由于你要求输入一次排序一次,并不是那种等待一组数据输入完成之后,再进行排序,这已经没有所谓的前后了啊?
第2条与第3条描述清楚后,我帮你解决...
4. C语言:编写一个程序用冒泡排序实现升序排列
1、首先打开一个空白的C语言文件,首先先定义一组待排序的数列以及各个变量,接着就是用来处理排序的逻辑:
5. c语言冒泡排序法代码
冒泡法排序的原理是相邻的两个数进行比较,现在以“输入10个数,对它们按小到大的顺序排序”这道题,来展示冒泡法排序。
#include
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++)
for(i=0;i<9-j;i++)
if (a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("the sorted numbers: \n");
for(i=0;i<10;i++)
printf( "%d",a[i]);
printf("\n");
return 0;
}
6. C语言冒泡排序
#include<stdio.h>
#defineMAX10//
#include<stdio.h>
#defineN10
intmain(){
inti,j,t,a[N];
printf("pleaseinputtennumbers: ");
for(i=0;i<N;i++)
scanf("%d",&a[i]); //原来只输入了一个数!!!
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if(a[i]<a[j]) //截图结果是用>号
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
}
printf("outputthesortednumbers: ");
for(i=0;i<N;i++)
printf("%d",a[i]);
printf(" ");
return0;
}
7. C语言冒泡排序法
冒泡排序每一趟排序把最大的放在最右边。
比如:
87 12 56 45 78
87和12交换:12 87 56 45 78
87和56交换: 56 87 45 78
87和45交换: 45 87 78
87和78交换: 78 87
到此第一趟排序结束,接下来的每一趟排序都是这样。
#include<stdio.h>
voidPrint(int*num,intn)
{
inti;
for(i=0;i<n;i++)
printf("%d",num[i]);
puts(" ");
return;
}
voidBubble_Sort(int*num,intn)
{
inti,j;
for(i=0;i<n;i++)
{
for(j=0;i+j<n-1;j++)
{
if(num[j]>num[j+1])
{
inttemp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
Print(num,n);
}
}
return;
}
intmain()
{
intnum[8]={87,12,56,45,78};
Bubble_Sort(num,5);
return0;
}
8. 用c语言编写冒泡排序算法
#include<stdio.h>
void main(){
int i,j,score[10],count=0,temp,sum=0;
double avg;
for(i=0;i<10;i++){ //输入10个学生的成绩,并求着10个学生的成绩总和
printf("请输入第%d个学生的成绩:",(i+1));
scanf("%d",&score[i]);
sum+=score[i];
}
avg=sum*1.0/10; //求着这10个学生成绩的平均值
for(i=0;i<10;i++){ //统计小于平均分的学生人数
if(score[i]<avg){
count++;
}
}
for(i=0;i<10;i++){ //使用冒泡排序对这10个学生的成绩逆序排序
for(j=0;j<9-i;j++){
if(score[j]<score[j+1]){
temp=score[j];
score[j]=score[j+1];
score[j+1]=temp;
}
}
}
printf("最高成绩:%d分,平均成绩:%.2f分,低于平均成绩的人数是:%d人!\n",score[0],avg,count);
}
9. C语言冒泡排序。
#include<stdio.h>
void main()
{
int a[10];
int i,j,t;
printf("input 10 numbers: ");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++) /*进行9次循环 实现9趟比较*/
for(i=0;i<9-j;i++) /*在每一趟中进行9-j次比较*/
if(a[i]>a[i+1]) /*相邻两个数比较,想降序只要改成a[i]<a[i+1]*/
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("the sorted numbers: ");
for(i=0;i<10;i++)
printf(" %d",a[i]);
}
(9)c语言if冒泡排序扩展阅读:
冒泡排序算法的运作
1、比较相邻的元素。如果第一个比第二个大(小),就交换他们两个。
2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大(小)的数。
3、针对所有的元素重复以上的步骤,除了最后已经选出的元素(有序)。
4、持续每次对越来越少的元素(无序元素)重复上面的步骤,直到没有任何一对数字需要比较,则序列最终有序。
简单的表示
#include <stdio.h>
void swap(int *i, int *j)
{
int temp = *i;
*i = *j;
*j = temp;
}
int main()
{
int a[10] = {2,1,4,5,6,9,7,8,7,7};
int i,j;
for (i = 0; i < 10; i++)
{
for (j = 9; j > i; j--)//从后往前冒泡
{
if (a[j] < a[j-1])
{
swap(&a[j], &a[j-1]);
}
}
}
for (i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
return 0;
}