概述
---------------------- ASP.Net+Android+IOS开发、 .Net培训、期待与您交流! ----------------------
数组的排序法
一共有五种方法
输入数组
#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;
}
选择排序法
void 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;
}
}
冒泡排序法
//冒泡排序法
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]);
}
}
}
交换排序法
//交换排序法
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;
}
}
}
}
插入排序法
//插入排序法
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;
}
}
折半排序法
//折半排序法
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);
}
最后
以上就是妩媚摩托为你收集整理的黑马程序员_数组的排序法数组的排序法的全部内容,希望文章能够帮你解决黑马程序员_数组的排序法数组的排序法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复