
正文
c语言选择排序数组函数 c语言中选择排序的完整代码
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
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 = SelectSort(TestData,5);
printf("排序之后的结果:\n");
for(i = 0;i5;i++)
printf("|%d|",TestData[i]);
return 0;
}
4、简单选择排序中,需要移动的记录次数比较少,主要的时间消耗在对于数据的比较次数。基本上,在比较的时候,消耗的时间复杂度为:n*n。
相关问答
Q1: 编写函数,使用选择排序法对数组进行排序(用C语言)
#include stdio.h
#include stdlib.h
#include time.h
int main(void)
{
int a[10],i,j,tmp,b;
srand(time(NULL));
for(i=0;i10;i++)
a[i]=rand()%100;
for(i=0;i10;i++)
printf("%3d",a[i]);
printf("\n");
for(i=0;i9;i++)
{
tmp=i;
for(j=i+1;j10;j++)
{
if(a[tmp]a[j])
tmp=j;
}
if(i!=tmp)
{
b=a[tmp];
a[tmp]=a[i];
a[i]=b;
}
}
for(i=0;i10;i++)
printf("%3d",a[i]);
printf("\n");
return 0;
}
随机产生数组中的元素, 更合理一些。 百科中有各种版本。
Q2: C语言. .编写一个Sort函数,完成对整型数组元素升序排列。
#include stdio.h
void sort(int a[], int n) {//选择排序
int i,j,k,t;
for(i = 0; i n - 1; ++i) {
k = i;
for(j = k + 1; j n; ++j) {
if(a[k] a[j]) k = j;
}
if(k != i) {
t = a[i];
a[i] = a[k];
a[k] = t;
}
}
}
int main() {
int a[] = {21,16,30,21,8,19,33,26,28,27,24,50,13,12};
int i,n = sizeof(a)/sizeof(a[0]);
printf("排序前:\n");
for(i = 0; i n; ++i)
printf("%d ",a[i]);
printf("\n");
sort(a,n);
printf("排序后:\n");
for(i = 0; i n; ++i)
printf("%d ",a[i]);
printf("\n");
return 0;
}
Q3: C语言中通过函数调用对一维数组进行排序
#include stdio.h
#include stdlib.h
#include time.h
#define MAXlen 100
void select_sort(int *x, int n) { //选择排序
int i, j, min;
int t;
for (i = 0; i n - 1; i++) { // 要选择的次数:0~n-2共n-1次
min = i; // 假设当前下标为i的数最小,比较后再调整
for (j = i + 1; j n; j++) { //循环找出最小的数的下标是哪个
if (*(x + j) *(x + min)) {
min = j; // 如果后面的数比前面的小,则记下它的下标
}
}
if (min != i) { // 如果min在循环中改变了,就需要交换数据
t = *(x + i);
*(x + i) = *(x + min);
*(x + min) = t;
}
}
}
int main() {
int i;
int iArr[MAXlen];
srand((unsigned int)time(NULL));
printf("\n排序前:\n");
for(i = 0 ; i MAXlen ; i++) {
iArr[i] = (unsigned int)rand() % 1000;
if(i % 10 == 0) printf("%\n");
printf("%5d",iArr[i]);
}
printf("\n");
select_sort(iArr,MAXlen);
printf("\n排序后:\n");
for(i = 0 ; i MAXlen ; i++) {
if(i % 10 == 0) printf("%\n");
printf("%5d",iArr[i]);
}
printf("\n\n");
return 0;
}
Q4: C语言:用选择排序法对一个数组里的数进行排序,从小到大,要求选出小的进行排序
这样c语言选择排序数组函数:
int *a = (int *)malloc(sizeof(int) * n); //动态分配数组空间 ,有几个元素,n就是几。
for(i=0; in; i++)
{
a[i]=录入数值;
}
Sort(a, n);
for(j=0; jn; j++)
{
printf("%d",a[ij);//输出c语言选择排序数组函数的内容就是排序好c语言选择排序数组函数了的
}
//下面方法是用来排序的
void Sort(int *a, int n)
{
int i, j, temp;
for(i=0; in; i++)
{
for(j=i; jn; j++)
{
if(a[i] a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
扩展资料:
注意事项
1、选择排序法是将序列分为两段,有序前列和无序后列,每次查找无序后列中最大元素,将其插入到有序前列的最末尾处,直至无序后列最后一个元素,最终排序后的序列为降序序列。
2、适用于包括数组和向量在内的序列。
3、选择排序与冒泡排序的区别是选择排序每次遍历时会记住最大元素的位置,只进行一次交换,而冒泡排序每次遍历时会交换两个顺序不合法的元素。
算法程序:
#include "stdafx.h"
#includeiostream
using namespace std;
void SelectSort(int A[],int n)
{
for(int i = 0;i n;i++ )
{
int max =i;
for(int j = i+1;j n;j++) //查找最大元素所在位置
{
if (A[j] A[max])
max =j;
}
int temp = A[max]; //交换无序后列中首元素与最大元素的位置
A[max] = A[i];
A[i] = temp;
}
}
关于c语言选择排序数组函数和c语言中选择排序的完整代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






