C语言编写函数,数组排序

如题所述

void Swap(int *a, int *b)

{

int tmp = *a;

*a = *b;

*b = tmp;

void Selectsort(int *arr, int sz)

{for (int end=sz-1; end>=0; end--)

{

int max = end;

int i;

for ( i = 0; i <= end; i++)//选出最大下标

{

if (arr[i] > arr[max])

{

max = i;

}

}

Swap(&arr[end], &arr[max]);

}

}

int main()

{

int arr[5] = { 1, 3, 2, 5, 4 };

int sz = sizeof(arr) / sizeof(arr[0]);

for (int i = 0; i <= sz - 1; i++)

{

scanf("%d", &arr[i]);

}

Selectsort(arr, sz);

for (int i = 0; i <= sz - 1; i++)

{

printf("%d ", arr[i]);

}

system("pause");

return 0;

}

扩展资料:

printf函数使用注意事项

1、域宽

%d:按整型数据的实际长度输出。

如果想输出指定宽度可以指定域宽,%md--&gt;m域宽,打印出来以后,在控制台上,显示m位;

如果要打印的数的位数如果超过我们设定m则原样输出;

如果要打印的数的位数如果小于设定的位数,则补空白,具体如下:

如果m为正数,则左对齐(左侧补空白);

如果m为负数,则右对齐(右侧补空白)。

2、转义字符

如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示。

如:printf("%f%%",1.0/3);输出结果:0.333333%。

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-06-07


#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;}本回答被网友采纳
相似回答