C语言排序法(选择排序法/冒泡排序法)
2016-03-31 10:42
225 查看
选择排序法
#include<stdio.h>
void main()
{
int i,j,k,temp,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for (i=0;i<10;i++)
{
k=i; //保存i的值,用k来进行循环排序
for(j=i+1;j<10;j++) //将第i个元素后面的元素与第i个元素进行比较
if(a[k]<a[j])//如果第k=i个元素后面的元素小于i号元素,交换两个元素的标号, 这样就将最小元素的标号放到最前面
k=j; //记录最大的位置
temp=a[k];//内循环结束后,交换两个标号下的元素的值
a[k]=a[i];
a[i]=temp;
}
for(i=0;i<10;i++)
printf("%d",a[i]);
}
选择排序法的优点是速度快,比较出最大(最小)的数字后才交换顺序。若内循环做完并未发现最大(最小)数,则自身交换,故交换次数为外循环循环次数。
冒泡排序法
#include<stdio.h>
void main()
{
inti,j,k,temp,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
for(j=i+1;j<10;j++)
{
if(a[i]<a[j])
{
temp=a[i]; //如果后面的数大于前面的数,交换数据。 内循环完成后a[0]存的数字是最大的。
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<10;i++)
printf("%d",a[i]);
}
冒泡排序法优点是程序简单,但是较繁琐,运行较慢,因为每次比较完最小(最大),内循环就要完成一次交换。
综上所述,建议使用选择排序法。另外两种排序法for语句条件都是一样的。选择排序法外循环交换,内循环记录最小(最大)位置。冒泡排序法则在内循环完成交换。
#include<stdio.h>
void main()
{
int i,j,k,temp,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for (i=0;i<10;i++)
{
k=i; //保存i的值,用k来进行循环排序
for(j=i+1;j<10;j++) //将第i个元素后面的元素与第i个元素进行比较
if(a[k]<a[j])//如果第k=i个元素后面的元素小于i号元素,交换两个元素的标号, 这样就将最小元素的标号放到最前面
k=j; //记录最大的位置
temp=a[k];//内循环结束后,交换两个标号下的元素的值
a[k]=a[i];
a[i]=temp;
}
for(i=0;i<10;i++)
printf("%d",a[i]);
}
选择排序法的优点是速度快,比较出最大(最小)的数字后才交换顺序。若内循环做完并未发现最大(最小)数,则自身交换,故交换次数为外循环循环次数。
冒泡排序法
#include<stdio.h>
void main()
{
inti,j,k,temp,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
for(j=i+1;j<10;j++)
{
if(a[i]<a[j])
{
temp=a[i]; //如果后面的数大于前面的数,交换数据。 内循环完成后a[0]存的数字是最大的。
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<10;i++)
printf("%d",a[i]);
}
冒泡排序法优点是程序简单,但是较繁琐,运行较慢,因为每次比较完最小(最大),内循环就要完成一次交换。
综上所述,建议使用选择排序法。另外两种排序法for语句条件都是一样的。选择排序法外循环交换,内循环记录最小(最大)位置。冒泡排序法则在内循环完成交换。
相关文章推荐
- c++11 学习及测试(emplace_back实现方式 数学分布 正则表达式)
- C语言字符串查找位置
- 28.C语言内存管理机制
- c++ string 中的十六进制数字转十六进制字符
- C++多个文件共享同一头文件时全局变量的声明
- c++封装链表实现-->学生信息管理分析系统
- C++在游戏中开发中发送多于1K的数据
- C++ pair(对组)用法
- c++数据类型万能转换器boost::lexical_cast
- CUDA CUBIN/PTX文件动态加载
- 一种实现C++反射功能的想法(二)
- linenoise 源码分析(一)
- 用C++实现高精度加法运算
- C语言字符型数据(一)—简单的恺撒密码
- 【poj 1942】Paths on a Grid 题意&题解&代码(C++)
- C语言小结(一)
- UE4 C++ Tips整理
- C语言,以空格为分割,以回车为结束标记,输入一串数字到一个int数组中
- C++中 字符替换注意点,适合新手 - char
- void与void*详解