对数组中N个整数由小到大排序的几种方法

来源:互联网 发布:筑巢奖网络投票排名 编辑:程序博客网 时间:2024/05/16 08:28

这里提供两种方法:选择法和冒泡法,依次实现对数组中整数的排序问题。
一:所谓选择法就是先将 N 个数中最小的数与 a[0] 对换;再将 a[1] 到 a[N - 1] 中最小的数与 a[1] 对换 ...... 每比较一轮,找出一个未进排序的数中的最小值。共比较 N - 1 轮。根据此思路编写程序如下:
#include<stdio.h>#include<windows.h>void swap(int *x,int *y){*x ^= *y;*y ^= *x;*x ^= *y;}void integer_sort(int a[],int len)  //选择法{int i = 0;int count = 0;for(;i < len-1;i++){int j = i+1;for(;j < len;j++){if(a[i] > a[j]){count++;swap(&a[i],&a[j]);}}if(!count){break;}}}int main(){int i = 0;int a[] = {0,-1111,209,88,-435,-90,4,7};int sz = sizeof(a)/sizeof(a[0]);integer_sort(a,sz);for(;i < sz;i++){printf("%d ",a[i]);}printf("\n");system("pause");return 0;}
二:冒泡法的基本思路就是每次将相邻的两个数比较,将小的调到前面,容易发现经过第一趟后 N 个数中最大的那个数已下沉到最后;第二趟对前面 N-1个数进行重复操作 ...... 依次进行下去,对 N 个数进行 N-1 趟后即可得到有序的数。根据此思想编写程序如下:
#include<stdio.h>#include<windows.h>void swap(int *x,int *y){ *x ^= *y; *y ^= *x; *x ^= *y;}void integer_sort(int a[],int len)  //气泡法{ int i = 0; int count = 0; for(;i < len-1;i++){  int j = 0;  for(;j < len-1-i;j++){   if(a[j] > a[j+1]){    swap(&a[j],&a[j+1]);    count++;   }   if(!count){    break;   }  } }}int main(){ int i = 0; int a[] = {43,29,90,6,4,56,1,2,47,100}; int len = sizeof(a)/sizeof(a[0]); integer_sort(a,len); for(;i < len;i++){  printf("%d ",a[i]); } printf("\n"); system("pause"); return 0;}

 
 
阅读全文
0 0
原创粉丝点击