C语言用冒泡法和选择法对10个数进行排序
5个回答
展开全部
选择排序算法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;
}
}
}
选择法排序原理:一次选定数组中的每一个数,记下当前位置并假设它是从当前位置开始后面数中的最小数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;
}
}
}
展开全部
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 ;
}
}
不就排个序吗,搞的这么复杂
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 ;
}
}
不就排个序吗,搞的这么复杂
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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]);
}
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]);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
冒泡法:
#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");
}
#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");
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询