排序的实现

简介: 排序的实现

一、选择排序

下面是第一种的代码和运行结果,可以自己把手动输入改为直接赋值


#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;
  }
 }
}

23835a4d9b18065f982ab23366956c2.jpg

选择排序代码运行结果

二、正反顺序的颠倒

#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;
// }
// 
//}

65db214f753b2c2edbe6760e453dbe3.jpg


相关文章
|
5月前
|
存储
第1章 排序
第1章 排序
|
6月前
|
存储 搜索推荐
排序的总结
排序的总结
|
搜索推荐 算法
排序实现
排序实现
65 0
|
搜索推荐
排序进行曲-v1.0
排序进行曲-v1.0
|
算法 搜索推荐
排序(详解)中
排序(详解)
71 0
|
搜索推荐
7-207 排序
7-207 排序
57 0
|
搜索推荐 算法 Java