(第六列)C语言最简单的排序方法,这两种必须懂:冒泡排序和交换排序。

简介: (第六列)C语言最简单的排序方法,这两种必须懂:冒泡排序和交换排序。

题目:任意输入十个数,进行从大到小的排序。


第一种:交换排序法

#include<stdio.h>
int main()
{
  int i,j,k,middle,A[10];
  printf("请输入十个数:");
  for(i=0;i<10;i++){
    scanf("%d",&A[i]);       //将十个数存在数组A[10]中 
  } 
  for(i=0;i<9;i++)
  {
    for(j=i+1;j<10;j++)
    {
      if(A[i]<A[j])        //将两个数进行比较
      {
        middle=A[i];
        A[i]=A[j];
        A[j]=middle;   //较大的数交换前面,较小的放到后面
      } 
    }
  }
  printf("从大到小排序为:");
  for(i=0;i<10;i++)
  {
    printf("%d ",A[i]);       //打印新的排序方式
  }
  return 0;
}


排序的原理:先将第一个数分别与后面的数进行比较,如果后面有比第一个数大的,两者进行交换,否则不交换。第一轮结束,第一个数不变了,第二个数又开始与后面的数进行比较,一直这样循环下去。这种方法的效率比较低。


第二种:冒泡排序法

#include<stdio.h>
int main()
{
  int i,j,t,A[10];
  printf("请输入十个数:");
  for(i=0;i<10;i++){
    scanf("%d",&A[i]);    //利用for循环输入十个数
  }
  for(i=0;i<9;i++)           //进行9次外循环
    {
    for(j=0;j<9-i;j++)     //每次外循环进行9-i次比较
        {
      if(A[j]<A[j+1])    //相邻两个数进行比较
            {
        t=A[j];
        A[j]=A[j+1];
        A[j+1]=t;      //利用中间变量t进行两个数的交换
      }
    }
  }
  for(i=0;i<10;i++){
    printf("%d ",A[i]);
  }
  return 0;
}


排序原理:比较两个相邻的元素,如果前一个比后一个小,则交换位置。这样重复下去,从开始第一对数到最后一对数比较完,然后第一个数最大,最后一个数最小。


相关文章
|
3天前
|
搜索推荐 算法 C语言
【排序算法】八大排序(上)(c语言实现)(附源码)
本文介绍了四种常见的排序算法:冒泡排序、选择排序、插入排序和希尔排序。通过具体的代码实现和测试数据,详细解释了每种算法的工作原理和性能特点。冒泡排序通过不断交换相邻元素来排序,选择排序通过选择最小元素进行交换,插入排序通过逐步插入元素到已排序部分,而希尔排序则是插入排序的改进版,通过预排序使数据更接近有序,从而提高效率。文章最后总结了这四种算法的空间和时间复杂度,以及它们的稳定性。
29 8
|
3天前
|
搜索推荐 算法 C语言
【排序算法】八大排序(下)(c语言实现)(附源码)
本文继续学习并实现了八大排序算法中的后四种:堆排序、快速排序、归并排序和计数排序。详细介绍了每种排序算法的原理、步骤和代码实现,并通过测试数据展示了它们的性能表现。堆排序利用堆的特性进行排序,快速排序通过递归和多种划分方法实现高效排序,归并排序通过分治法将问题分解后再合并,计数排序则通过统计每个元素的出现次数实现非比较排序。最后,文章还对比了这些排序算法在处理一百万个整形数据时的运行时间,帮助读者了解不同算法的优劣。
21 7
|
29天前
|
算法 C语言
【C语言】排序查找
【C语言】排序查找
|
29天前
|
算法 搜索推荐 C语言
【C语言】冒泡排序+优化版
【C语言】冒泡排序+优化版
|
1月前
|
Java 编译器 C语言
【一步一步了解Java系列】:Java中的方法对标C语言中的函数
【一步一步了解Java系列】:Java中的方法对标C语言中的函数
19 3
|
16天前
|
C语言
【c语言】qsort函数及泛型冒泡排序的模拟实现
本文介绍了C语言中的`qsort`函数及其背后的回调函数概念。`qsort`函数用于对任意类型的数据进行排序,其核心在于通过函数指针调用用户自定义的比较函数。文章还详细讲解了如何实现一个泛型冒泡排序,包括比较函数、交换函数和排序函数的编写,并展示了完整的代码示例。最后,通过实际运行验证了排序的正确性,展示了泛型编程的优势。
16 0
|
1月前
|
NoSQL 算法 Redis
Redis的实现三:c语言实现平衡二叉树,通过平衡二叉树实现排序集
本博客介绍了如何在C语言中实现一个平衡二叉树,并通过这个数据结构来模拟Redis中的排序集功能。
12 0
|
4月前
|
搜索推荐 C语言
C语言冒泡排序(附源码和动态图)
冒泡排序是一种简单的排序算法,其基本思想是通过重复遍历待排序的数列,比较每对相邻元素的值,如果它们的顺序错误(即满足一定的排序条件,如从小到大排序时前一个元素大于后一个元素),就交换它们的位置。这个过程就像水底的气泡一样逐渐向上冒,因此得名“冒泡排序”。
|
5月前
|
C语言
【C语言刷题每日一题】一维数组的交换
【C语言刷题每日一题】一维数组的交换
|
5月前
|
C语言
c语言左旋字符串问题(不同方法超详细解答)
c语言左旋字符串问题(不同方法超详细解答)
27 1