冒泡和选择排序
2017-07-11 19:39
253 查看
/*冒泡排序:两两依次比较,若违法规定则交换。
从小到大排序(若给定N个数)
1.第一次扫描要比较(N-1)次,取出最大的值,放入最后一个元素a[N-1]中。
2.第二次扫描要比较(N-2)次,取出此次最大的,放入到第二个元素a[N-2]中。
3.以此类推。。。。。
*/
#include <stdio.h> #define N 10 int main() { int a ; int temp ,i,j,k; k=N; printf ("Please input %d numbers:\n",k); //输入N个数,放到数组a 中(a :共有N个元素,但是下标0开始) for (i=0;i<N;i++ ) scanf ("%d",&a[i]); //要扫描(N-1)次 for (i=0;i<(N-1);i++) { /*i=0是第一次扫描,数组里面的元素两两依次比较, 要比较(N-1)次,可以比较出一个最大的。 i=1是第二次扫描,数组里面的元素再次比较, 因为第一次已经比较出一个,所以第二次将少比较一次*/ for(j=0;j<(N-1-i);j++) //数据交换 if (a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } //打印结果 printf ("The output is:\n "); for (i=0;i<N;i++) printf ("%d\n",a[i]); return 0; }
选择排序
/*N个数从小到大排序
1.第一次选择:取第一个数,假设它是最小,向后依次比较,
若出现比它小的,则进行地址互换,然后再向后继续比较,直到数据末尾。
2.第一次选择后,选出了最小数据所在的位置(地址),再把数据互换,换到第一位。
3.第二次选择:取第二个数,同1
4.同2
5.依次选择
*/
#include <stdio.h> #define N 5 int main() { //数据定义 int a ; int i,j,k,min,temp; k = N; //输入 printf ("Please input %d numbers:\n",k); for (i=0;i<N;i++) scanf ("%d",&a[i]); //取第i个数,假设是最小 for (i=0;i<N;i++) { min=i; //第i个数,向后依次比较 //若出现比第i个数小的数,则进行地址互换 for (j=i+1;j<N;j++) { if (a[min] > a[j]) min=j; } //找到最小的数所在的位置,把最小的数换到对应位置 if(min != i ) { temp=a[i]; a[i]=a[min]; a[min]=temp; } } //打印 printf ("the output is:\n"); for (i=0;i<N;i++) printf ("%d\n",a[i]); return 0; }
相关文章推荐
- 内排序中3种复杂度为(n^2)的算法-----插入、冒泡、选择
- Python实现冒泡,插入,选择排序简单实例
- java冒泡_选择_插入三大排序
- 简单排序——冒泡,选择,插入
- PHP(冒泡,快速,选择,插入)排序
- 冒泡,简单选择,直接插入排序(Java版)
- java实现冒泡,插入,选择排序
- 冒泡以及直接选择排序的JAVA实现
- python选择,冒泡,插叙排序方式
- Java数组排序总结(冒泡,选择,插入,…
- C# 实现排序--冒泡--选择--插入
- 链表的排序 (选择和冒泡)
- 排序:简单排序算法实现:冒泡,选择,插入
- 【转】Java数组排序总结(冒泡,选择,插入,希尔)
- java:三种经典大排序汇总,冒泡,插入,选择
- 排序算法(三)冒泡、选择排序的Python实现及算法优化详解 推荐
- PLSQL实现排序(冒泡、选择、快速)
- javaSE基础编程——排序(冒泡,选择)
- c++实现冒泡,选择,插入,快速排序
- 排序方法之冒泡(鸡尾酒)、选择、插入(二分插入)、希尔排序