对数组中N个整数由小到大排序的几种方法
2017-12-13 16:45
501 查看
这里提供两种方法:选择法和冒泡法,依次实现对数组中整数的排序问题。一:所谓选择法就是先将 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; }
相关文章推荐
- 在排序数组中找给定数字出现的次数和任意整数有几种分解方法
- 作业:例题5.7 用选择法对数组中10个整数按由小到大排序。要求使用函数的方法。
- IOS几种简单有效的数组排序方法
- iOS开发之把数组中的元素进行随机排序、随机数产生的几种方法
- IOS几种简单有效的数组排序方法
- iOS几种简单有效的数组排序方法
- 怎样编写一个程序,把一个有序整数数组放到二叉树中? 编写实现链表排序的一种算法。说明为什么你会选择用这样的方法?
- 用指针方法对10个整数按由小到大的顺序排序
- iOS几种简单有效的数组NSArray排序方法
- IOS几种简单有效的数组排序方法
- IOS几种简单有效的数组排序方法
- IOS几种简单有效的数组排序方法
- ios的几种简单有效的数组排序方法
- 例7.12用选择法对数组中10个整数按由小到大排序。
- 编写学习的java几种常用数组的排序方法,给大家分享一下
- JAVA 中数组的几种排序方法
- 用指针变量作函数形参接收数组地址,解决10个整数按由小到大顺序排序问题
- IOS几种简单有效的数组排序方法
- 用选择法对数组中10个整数按由小到大排序
- JAVA 中数组的几种排序方法