您的位置:首页 > 其它

一维数组的应用--排序

2011-01-07 21:26 330 查看
1. 简单比较排序

使用for循环描述i,j的变化规律,并推广到n个元素。

i 外循环变量控制比较次数,i=0,i<n-1

j 内循环变量控制一次内的比较、交换,j=i+1,j<n

例1:简单比较循环

#include<stdio.h>

main(){

int a[10];

int i,j;

int temp=0;

printf("please input ten number random:/n");

for(i=0;i<10;i++)//输入10个数

scanf("%d",&a[i]);

printf("the number you have input is:/n");

for(i=0;i<10;i++)//输出输入的10个数

printf("%d/t",a[i]);

for(i=0;i<9;i++)//简单比较排序

for(j=i+1;j<10;j++){

if(a[i]>a[j]){//换序

temp=a[i];

a[i]=a[j];

a[j]=temp;

}

}

printf("the changed secquence is:/n");

for(i=0;i<10;i++)//输出输入的10个数

printf("%d/t",a[i]);

}

2. 冒泡循环

使用for循环描述i,j的变化规律,并推广到n个元素。

i 外循环变量控制比较次数,i=0,i<n-1

j 内循环变量控制两两比较元素的下标,j=0,j<n-i-1

例2:冒泡排序




#include<stdio.h>
main(){
int a[10];
int i,j;
int temp=0;
printf("please input ten number random:/n");
for(i=0;i<10;i++)//输入10个数
scanf("%d",&a[i]);
printf("the number you have input is:/n");
for(i=0;i<10;i++)//输出输入的10个数
printf("%d/t",a[i]);
for(i=0;i<10;i++)//冒泡排序
for(j=0;j<9-i;j++){
if(a[j]>a[j+1]){//换序
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
printf("the changed secquence is:/n");
for(i=0;i<10;i++)//输出输入的10个数
printf("%d/t",a[i]);
}
3. 选择排序
算法描述:从a[0]元素开始找出最小值元素的下表min,将a[0]元素与a[min]元素进行交换;第二趟,从a[1]元素开始[b]
[b]

最小值元素的下表min,将a[1]元素与

a[min]元素进行交换。

[b]
使用for循环描述i,j的变化规律,并推广到n个元素。

i 外循环变量控制比较次数,i=0,i<n-1

j 内循环变量控制找元素值最小的下标,j=i+1,j<n

例3:选择排序

#include<stdio.h>

main(){

int a[10];

int i,j,min;

int temp=0;

printf("please input ten number random:/n");

for(i=0;i<10;i++)//输入10个数

scanf("%d",&a[i]);

printf("the number you have input is:/n");

for(i=0;i<10;i++)//输出输入的10个数

printf("%d/t",a[i]);

for(i=0;i<10;i++)//冒泡排序

{

min=i;

for(j=i;j<10;j++){

if(a[j]<a[min])//换序

min=j;

}

if(min!=i){

temp=a[i];

a[i]=a[min];

a[min]=temp;

}

}

printf("the changed secquence is:/n");

for(i=0;i<10;i++)//输出输入的10个数

printf("%d/t",a[i]);

}



[/b]
[/b]

[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: