C语言用冒泡法和选择法对10个数进行排序

 我来答
绅士与狗
2011-04-24 · TA获得超过207个赞
知道答主
回答量:215
采纳率:0%
帮助的人:0
展开全部
选择排序算法C语言的实现
选择法排序原理:一次选定数组中的每一个数,记下当前位置并假设它是从当前位置开始后面数中的最小数min=i,从这个数的下一个数开始扫描直到最后一个数,并记录下最小数的位置min,扫描结束后如果min不等于i,说明假设错误,则交换min与i位置上数。 具体实现代码如下:
#include<stdio.h>
/****************************************
**选择排序法对十个整数进行排序 ***
****************************************/
//n为数组长度;
void sort(int a[],int n)
{
int temp,min;
for(int i=0;i<n;i++)
{
min=i;//先假设最小下标为i
for(int j=i+1;j<n;j++)
if(a[j]<a[min])
min=j;//对i之后的数进行扫描将最小的数赋予min
if(min!=i)
{
temp=a[i];
a[i]=a[min];
a[min]=temp;
}//判断min与i是否相等,若=则说明原假设正确反之交换数值
}
}
//用main函数验证
void main()
{
int a[10];
printf("please input the array a:\n");
for(int i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);

for(i=0;i<10;i++)
printf("%d\t",a[i]);
}
冒泡排序法
char array[5]={'2','3','4','1','6'};
int i;
int j;
char temp;
int k;

for(i=0;i<5;i++)
{

for(j=0;j<4-i;j++)
{
if(array[j]>array[j+1])
{
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}

}
牟书易7p
2011-04-25 · TA获得超过617个赞
知道答主
回答量:126
采纳率:0%
帮助的人:62.2万
展开全部
i n t a [ 1 0 ] = { 1 , 2 , 5 , 3 , 4 , 7, 6 , 9 , 8 , 0 } ;
i n t t e m p , i , j , k ;
/ / 冒 泡 法 从 大 到 小 排 序
f o r ( i = 0 ; i < 1 0 - 1 ; i + + ) {
f o r ( j = 0 ; j < n - i ; j + + ) {
i f ( a [ j + 1 ] > a [ j ] ) {
t e m p = a [ j ] ;
a [ j ] = a [ j + 1 ] ;
a [ j + 1 ] = t e m p ;
}
}
}
/ / 选 择 法 从 大 到 小 排 序
f o r ( i = 0 ; i < 1 0 - 1 ; i + + ) {
k = i ;
f o r ( j = i + 1 ; j < 1 0 ; j + + )
i f ( a [ j ] > a [ k ] ) k = j ;
i f ( k ! = i ) {
t e m p = a [ i ] ;
a [ i ] = a [ k ] ;
a [ k ] = t e m p ;
}
}
不就排个序吗,搞的这么复杂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
705680934
2011-04-24
知道答主
回答量:46
采纳率:0%
帮助的人:22.4万
展开全部
#include <stdio.h>
void main()
{
int a[9],i,j,max,t;
for(i = 0;i < 9;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(j = 0;j < 9;j++)
{
for(i = 0;i < 9-j-1;i++)
{
if(a[i] > a[i+1])
{
t = a[i];
a[i] = a[i+1];
a[i+1] = t;
}
}
}
for(i = 0;i < 9;i++)
printf("%d ",a[i]);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
伍拾步
2011-04-24 · TA获得超过8199个赞
知道大有可为答主
回答量:1852
采纳率:100%
帮助的人:1946万
展开全部
#include "stdio.h"
void bubble_sort(int array[],int n)
{//冒泡法排序
int i,j,flag,temp;
for(i = 0; i < n-1; i++)
{
flag = 1;
for(j = 0; j < n-i-1; j++)
{
if(array[j] > array[j+1])
{
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
flag = 0;
}
}
if(1 == flag)break;
}
}
void choose_sort(int array[],int n)
{//选择法排序
int i,j,temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if (array[i]>array[j])
{
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
void print(int array[],int n)
{//输出数组
int i;
for(i = 0; i < n; i++)
printf("%d ",array[i]);
printf("\n\n");
}
int main()
{
int a[10],i;
printf("please input the array a:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
getchar();
printf("排序前:");
print(a,10);
printf("1.用冒泡法排序。\n2.用选择法排序。\n\n请选择操作:");
switch(getchar())
{
case '1':bubble_sort(a,10);break;
case '2':choose_sort(a,10);break;
default:printf("操作错误!");return 0;
}
printf("\n排序后:");
print(a,10);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rgxktk6md
推荐于2017-12-16 · TA获得超过1547个赞
知道小有建树答主
回答量:8339
采纳率:0%
帮助的人:2839万
展开全部
冒泡法:
#define N 10
#include<stdio.h>
maopao(int a[N])
{
int i,j,t;
for(j=0;j<N;j++)
for(i=0;i<N-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("排序后的数组为:\n");
for(i=0;i<N;i++)
printf("%d ",a[i]);
printf("\n");
}

void main()
{
int i,a[N];
printf("请输入10个数:\n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
printf("\n");
maopao(a[N]);

}

选择法:
#include<stdio.h>
#define N 10
void main()
{
int i,j,k,t,a[N];
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<N;i++)
{
k=i;
for(j=i+1;j<N;j++)
if(a[j]>a[k])
k=j;
if(k!=i)
{
t=a[i];
a[i]=a[k];
a[k]=t;
}

}
for(i=0;i<10;i++)
{
printf("%d ",a[i]);

}
printf("\n");
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式