排序的实现
Posted 通信汪的美好生活
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序的实现相关的知识,希望对你有一定的参考价值。
一、选择排序
下面是第一种的代码和运行结果,可以自己把手动输入改为直接赋值
#include<stdio.h>
#pragma warning(disable:4996)//我使用的是Microsoft Visual Studio,没有这句话会报错
void sort(int x[], int n);
int main()
{
int i, a[10];
for (i = 0; i < 10; i++)
{
printf("请输入任意十个数,还需要输入:%d个数\\n",10-i);
scanf("%d", &a[i]);
}
sort(a, 10);
printf("从大到小顺序:\\n");
for ( i = 0; i < 10; i++)
{
printf("%d\\n", a[i]);
}
printf("\\n");
return 0;
}
void sort(int x[], int n)
{
int i, j, k = 0, t;
for (i = 0; i < n - 1; i++)
{
for (j = i+1;j < n; j++)
if (x[j] > x[k])
k = j;
if (k != i)
{
t = x[i];
x[i] = x[k];
x[k] = t;
}
}
}
二、正反顺序的颠倒
#include<stdio.h>
#pragma warning(disable:4996)//我使用的是Microsoft Visual Studio,没有这句话会报错
void inv(int x[], int n);
int main()
{
int i, a[10];
for (i = 0; i < 10; i++)
{
printf("请输入任意十个数,还需要输入:%d个数\\n", 10 - i);
scanf("%d", &a[i]);
}
inv(a, 10);
printf("反序输出:\\n");
for (i = 0; i < 10; i++)
{
printf("%d\\n", a[i]);
}
printf("\\n");
return 0;
}
void inv(int x[], int n)//方法一
{
int temp, *i, *j;
i = x, j = x + n - 1;
for (;i<j;i++,j--)
{
temp = *i;
*i = *j;
*j = temp;
}
}
//void inv(int x[], int n)//方法二
//{
// int temp,i,j,m=(n-1)/2;
// for (i = 0; i <=m; i++)
// {
// j = n - 1 - i;
// temp= x[i];
// x[i] = x[j];
// x[j] = temp;
// }
//
//}
以上是关于排序的实现的主要内容,如果未能解决你的问题,请参考以下文章
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段