排序的实现

简介: 排序的实现

一、选择排序

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


#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


相关文章
|
3月前
|
存储 搜索推荐
排序的总结
排序的总结
|
3月前
|
人工智能 搜索推荐 算法
几种排序的实现
几种排序的实现
17 2
|
11月前
|
存储 搜索推荐 算法
排序相关问题
排序相关问题
55 1
|
搜索推荐 算法
排序实现
排序实现
54 0
|
算法 搜索推荐
排序(详解)上
排序(详解)
63 0
排序(一)
快速学习排序(一)
多种排序
冒泡排序、选择排序、堆排序
ZCMU - 2149: wjw的排序问题
ZCMU - 2149: wjw的排序问题
86 0