函数选择法排序c语言 函数选择法排序c语言怎么写

C语言选择法排序#includestdio.h
#define M 5
void main()
{
int b[M],i,j,t,k;
for(i=0;iM;i)
scanf("%d",b[i]);
for(i=0;iM-1;i)
{
for(k=i,j=i 1;jM;j)
if(b[k]b[j])
k=j;
if(i!=k)
{
t=b[i];
b[i]=b[k];
b[k]=t;
}
}
for(i=0;iM;i)
printf("%d ",b[i]);
}
错在大括号位置加错了 。
扩展资料:
C语言选择排序详解
工作原理是每一次从无序组的数据元素中选出最?。ɑ蜃畲螅┑囊桓鲈?,存放在无序组的起始位置 , 无序组元素减少,有序组元素增加,直到全部待排序的数据元素排完 。
以升序为例的图解:
代码:
#includestdio.h
void SelectionSort(int *num,int n)
{
int i = 0;
int min = 0;
int j = 0;
int tmp = 0;
for(i = 0;in-1;i)
{
min = i;//每次讲min置成无序组起始位置元素下标
for(j = i;jn;j)//遍历无序组 , 找到最小元素 。
{
if(num[min]num[j])
{
min = j;
}
}
if(min != i)//如果最小元素不是无序组起始位置元素,则与起始元素交换位置
{
tmp = num[min];
num[min] = num[i];
num[i] = tmp;
}
}
}
(此处空一行)
int main()
{
int num[6] = {5,4,3,2,9,1};
int i = 0;
SelectionSort(num,6);//这里需要将数列元素个数传入 。有心者可用sizeof在函数内求得元素个数 。
for(i = 0;i6;i)
{
printf("%d ",num[i]);
}
return 0;
}
c语言,用选择法对10个数排序,按正负数分开输出?选择排序:大循环i依次取元素和后面所有元素比较,找出其中最值,和当前i的元素交换 。一次大循环交换一次 。
程序思路:
一、排序函数:根据传参,实现降序升序两种功能 。
二、数组输出:根据传参,实现正数和负数输出两种功能 。
下面是代码:
#include stdio.h
void px(int nums[],int len,int t);//排序
void showNums(int nums[],int len,int t);//输出
int main()
{
int nums[10]={8,7,-1,2,-5,4,9,-3,-6,1};
printf("原数组:8,7,-1,2,-5,4,9,-3,-6,1\n");
printf("升序排列后:\n");
px(nums,10,1);
printf("|---正数为:");
showNums(nums,10,1);
printf("|---负数为:");
showNums(nums,10,0);
//--------------------------------
printf("降序排列后:\n");
px(nums,10,0);
printf("|---正数为:");
showNums(nums,10,1);
printf("|---负数为:");
showNums(nums,10,0);
}
void showNums(int nums[],int len,int t)//t=1输出正数,t=0输出负数
{
int i;
for(i=0;ilen;i)
if((tnums[i]0)||(!tnums[i]0))
printf("%d ",nums[i]);
printf("\n");
}
void px(int nums[],int len,int t)//t=1升序 , t=0降序
{
int i,j,k,m;
for(i=0;ilen-1;i)
{
m=nums[i],k=i;
for(j=i 1;jlen;j)
if((tmnums[j])||(!tmnums[j])) m=nums[j],k=j;
m=nums[i],nums[i]=nums[k],nums[k]=m;
}
}
用C语言编程:用选择法对10个整数排序,10个整数用scanf函数输入1、打开visual C6.0函数选择法排序c语言,准备一个空白函数选择法排序c语言的c语言文件函数选择法排序c语言,引入头文件,在main函数中定义变量和数组:
2、接下来用scanf函数输入函数选择法排序c语言的10个数,将输入的数存入到变量a中,接着进行比较排序,如果后一个数比前一个数大则利用中间变量t实现俩值互换,最后输出排序的结果:
3、编译运行程序 , 输入任意的10个数 , 回车后即可看到排序后的结果 。以上就是c语言中选择排序的用法:
c语言,使用函数的选择法排序void selectionsort(int a[],int m)
{
int i,j;
int k;
int tmp;
for(i = 0; im-1; i)//控制循环次数,n个数需要n-1次循环
{
k = i;
for(j = i 1; jm ; j)
{
if(a[j]a[k])
k = j;
}
//i不等于k是就证明a[i]不是最小的,
//i等于k时证明a[i]就是本轮比较过程中最小的值
if(i != k)
{
tmp = a[i];
a[i] = a[k];
a[k] = tmp;
}
}
}
在C语言中,如何用函数实现 , 用选择法对10个数进行排序//选择 void sort1(int *a,int n){for(int i=0;in-1;i)for(int j=i;jn;j)if(a[i]a[j])sp(a[i],a[j]);}//冒泡 void sort2(int *a,int n){for(int i=1;in-1;i)for(int j=0;jn-i;j)if(a[j]a[j 1])sp(a[j],a[j 1]);}//插入 void sort(int* a,int n) {int temp,int item;for (int i=1;in;i){temp=a[i];item=i-1;while (item=0a[item]temp){a[item 1]=a[item];item--;}a[item 1]=temp;}} //快速排序 void q(int *a,int left,int right){int i=left;int j=right;int mid=a[(i j)/2];while(i=j){while((iright)(a[i]mid))i;while((jleft)(a[j]mid))j--;if(i=j){sp(a[i],a[j]);i;j--;}}if(iright)q(a,i,right);if(jleft)q(a,left,j);} void sort3(int *a, int n){q(a,0,n-1); }//双向冒泡绝对由于单向冒泡 原因很简单如果数组前面或者后面排好那么就很明显表现出差距void sort(int* a,int n) { int left=0,right=n-2,t;do {for (int i=left;i=right;i){if (a[i]a[i 1]){swap(a[i],a[i 1]);t=i;}}right=t-1;for ( i=right;i=left;i--){if(a[i]a[i 1]){swap(a[i],a[i 1]);t=i;}}left=t 1;} while (left=right);}const int arrsize=10;int main(){int a[arrsize];for(int i=0;iarrsize;i)cina[i];/////////////////////////////////在这行加入所对应的函数可以验证for(int i=0;iarrsize;i)couta[i]" ";system("pause");return 0;}
c语言怎样通过函数调用实现选择排序法c语言通过函数调用实现选择排序法:
1、写一个简单选择排序法的函数名,包含参数 。int SelectSort(int * ListData,int ListLength);
2、写两个循环,在循环中应用简单选择插入排序:
int SelectSort(int * ListData,int ListLength)
{
int i , j ;
int length = ListLength;
for(i=0;i=length-2;i)
{
int k = i;
for(j=i 1;j=length-1;j)
{
if(ListData[k]ListData[j])
{
k=j;
}
}
if(k!=i)
{
int tmp = ListData[i];
ListData[i] = ListData[k];
ListData[k] = tmp;
}
}
return 0;
}
3、对编好的程序进行测试,得出测试结果:
int main()
{
int TestData[5] = {34,15,6,89,67};
int i = 0;
printf("排序之前的结果\n");
for(i = 0;i5;i)
printf("|%d|",TestData[i]);
int retData = https://www.04ip.com/post/SelectSort(TestData,5);
printf("排序之后的结果:\n");
for(i = 0;i5;i)
【函数选择法排序c语言 函数选择法排序c语言怎么写】printf("|%d|",TestData[i]);
return 0;
}
4、简单选择排序中,需要移动的记录次数比较少 , 主要的时间消耗在对于数据的比较次数 。基本上,在比较的时候,消耗的时间复杂度为:n*n 。
关于函数选择法排序c语言和函数选择法排序c语言怎么写的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读