C语言:给定一数组,包涵n个元素,设计功能函数,使用选择排序法,对其进行从大到小排序

如题所述

//选择排序算法,按从小到大顺序
void select_sort(int *arr,int n)
{
    int i,j,k;
    int tmp;

    for(i=0;i<n-1;i++)
    {
        k=i;  //开始一趟选择排序,假定第i个元素是后面n-i+1个未排序的元素中最小的元素
        for(j=i+1;j<n;j++)
        {
if(arr[k] > arr[j]) //如果发现比当前最小元素还小的元素,则更新记录最小元素的下标k
    k=j;
        }
//如果最小元素的下标不是后面n-i+1的未排序序列的第一个元素,则需要交换第i个元素和后面找到的最小元素的位置
        if(k != i)
        {
            tmp=arr[k];
            arr[k]=arr[i];
            arr[i]=tmp;
        }
    }
}

温馨提示:内容为网友见解,仅供参考
无其他回答

C语言采用选择法对数组元素按从大到小的顺序排列
main(){ int a[SIZE]={3,8,7,6,5,0,1,2,9,4};int max,pos;int i,j;printf("数组中原存放数据是:\\n");for(i=0;i<SIZE;i++)printf("%3d",a[i]);for(i=0;i<SIZE-1;i++){ max=a[i];pos=i;for(j=i+1;j<SIZE;j++)if(a[j]>max){ max=a[j];pos=j;} a[...

C语言编程——选择排序法,要求:由主函数调用排序子函数,对n个整数进 ...
void sortFun(int a[], int n){ int temp;for(int i=0;i<n;i++) \/\/进行n个循环,每次选出剩下的最小的数,如第一次选出n个数中最 for(int j=i+1;j<n;j++)\/\/小的那个,如a[8],放入a[0],而将a[0]原来的值放入a[8].第二次 if(a[j]<a[i]) \/\/就从a[1]...

C语言:用选择排序法对一个数组里的数进行排序,从小到大,要求选出小的...
int *a = (int *)malloc(sizeof(int) * n); \/\/动态分配数组空间 ,有几个元素,n就是几。for(i=0; i<n; i++){ a[i]=录入数值;} Sort(a, n);for(j=0; j<n; j++){ printf("%d",a[ij);\/\/输出的内容就是排序好了的 }\/\/下面方法是用来排序的 void Sort(int *a, int...

C语言:编程输入n个整数,用选择法排序将它们按升序重新排列后输出...
x[20],i,j,k; while(1){ printf("Input n(int n<=20)...\\n"); if(scanf("%d",&n),n==0) break; for(i=0;i<n;scanf("%d",x+i++)); printf

求解C语言程序设计题:编写函数用选择排序法对数组中的数据进行从小到...
void sort(int a[], int n){ int i, j, t;for(i = 0; i < n - 1; i++)for(j = i + 1; j < n; j++)if(a[i] > a[j]){ t = a[i]; a[i] = a[j]; a[j] = t;} }

c语言数组编程,输入n个整数,将这n个数按绝对值由大到小排序输出
for(i=0; i<n; i++) { printf("%d ",a[i]); } printf("\\n"); return 0;}好了,调试通过,输入数组后,先打印排序前的数组,然后排序,之后输出排序后的数组。。。 本回答由网友推荐 举报| 答案纠错 | 评论 2 17 右手兂名指 采纳率:69% 来自团队:CppExpert 擅长: C\/C++ Linux 网站使用 其他...

是一个C语言编程题:编程对N个整数进行从大到小顺序排列
VC6.0++编译,这是选择法。排序问题有冒泡法和排序法俩种方法,都应掌握。include<stdio.h> define N 5 void main(){ int i,j,k,a[N],t;printf("请输入%d个整数:",N);for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N-1;i++){ k=i;for(j=i+1;j<N;j++)if(a[...

c语言中n个数比大小,然后在从大或者从小输出该怎么写?
int main(void){ int n,*p,i,j,k,l; printf("Input n(int n>0)...\\nn="); scanf("%d",&n); if((p=(int *)malloc(sizeof(int)*n))==NULL){ printf("Application memory failure...\\n"); exit(0); } srand((unsigned)...

C语言编程,输入一组数字用选择排序法照从小到大排列输出 并删除最大的...
include<stdio.h>int main(){void sort(int arry[],int n);int a[10],i;printf("enter array with 10 numbers:\\n");for(i=0;i<10;i++)scanf("%d",&a[i]);sort(a,10);printf("the sorted array:\\n");for(i=0;i<9;i++)printf("%d ",a[i]);printf("\\n");return 0...

c语言常用数组排序方法
选择排序法 在待排序数组中,查找最大或最小的元素,将其与最前面未排序元素互换位置。查找最大值时从小到大排序,查找最小值时从大到小排序。使用变量iTemp存放最值,iPos记录最值位置。进行内外双层循环,外层循环将最值交换,内层循环查找最值。每次外层循环包含从m-n次内层循环,m为元素总数,n为...

相似回答