---------------------- ASP.Net+Android+IOS开发、 .Net培训、期待与您交流! ----------------------
数组的排序法
一共有五种方法
输入数组
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16#include<stdio.h> int main(){ int i; int a[10]; for(i=0;i<10;i++){ printf("请输入数组a[%d]保存的数字:",i); scanf("%d",&a[i]); } void test5(int left,int right,int a[]); test5(0,9,a); for(i=0;i<10;i++){ printf("a[%d]=%dn",i,a[i]); } return 0; }
选择排序法
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16void test1(int a[]){ int i,j,t,pos; for (i=0; i<10; i++) { t=a[i]; pos=i; for (j=i+1; j<10; j++) { if(t>a[j]){ t = a[j]; pos = j; } } a[pos]=a[i]; a[i]= t; } }
冒泡排序法
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16//冒泡排序法 void test2(int a[]){ int i,j,t; for (i=1; i<10; i++) { for(j=9;j>=i;j--){ if(a[j]<a[j-1]){ t=a[j]; a[j]=a[j-1]; a[j-1]=t; } // printf("%d",a[j]); } } }
交换排序法
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14//交换排序法 void test3(int a[]){ int i,j,t; for (i=0; i<9; i++) { for (j=i+1; j<10; j++) { if(a[i]>a[j]){ t=a[i]; a[i]=a[j]; a[j]=t; } } } }
插入排序法
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14//插入排序法 void test4(int a[]){ int i,t,pos; for (i=1; i<10;i++) { t = a[i]; pos = i - 1; while ((pos>=0)&&(t<a[pos])) { a[pos+1] = a[pos]; pos--; } a[pos+1] = t; } }
折半排序法
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24//折半排序法 void test5(int left,int right,int a[]){ int i,j,middle,t; i=left; j=right; middle = a[(left+right)/2]; do{ while ((a[i]<middle)&&(i<right)) i++; while((a[j]>middle)&&(j>left)) j--; if (i<=j) { t = a[i]; a[i] = a[j]; a[j] = t; i++; j--; } }while(i<=j); if (left<j) test5(left, j, a); if(right>i) test5(i,right,a); }
最后
以上就是妩媚摩托最近收集整理的关于黑马程序员_数组的排序法数组的排序法的全部内容,更多相关黑马程序员_数组内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复