C语言中常见的排序方法

在C语言中,常见的排序方法有冒泡法,排序法,插入法等等。所谓的冒泡法,就是对一组数字进行从大到小或者从小到大的一种排序方法。主要就是相邻的数值相互交换。从第一个数值开始,如果这相邻的两个数值排序与我们希望的排序位置不同时,那么就将两个数的位置进行交换。如果一致,就不用交换。一直重复这个过程,直到没有数值需要交换为止,则排序完成。下面是将10个学生的成绩用冒泡法按顺序排列的做法:

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int i;
 5     int arr[10];
 6     for(i=0;i<10;i++)
 7     {
 8       printf("请输入第%d个学生的成绩:\n",i+1);
 9       scanf("%d",&arr[i]);
10      }
11
12      int j;
13      for(j=0;j<9;j++)
14      {
15         for(i=0;i<9;i++)    //循环9次
16           {
17               int temp=arr[i];  //将arr[i]赋值到一个变量中,arr[i+1]赋值到arr[i]中,此时相邻两个数值换位。
18               arr[i]=arr[i+1];
19               arr[i+1]=temp;
20           }
21       }
22       for(i=0;i<10;i++)
23       {
24           printf("%d\n",&arr[i]);
25     }
26
27
28 return 0;
29 }    

选择法:

选择法是用一个变量不断地选择小的数,将值付给变量再通过变量付给相应位置的数组元素…

#include<stdio.h>
int main()
{
   int i;
   int arr[10];
   for(i=0;i<10;i++)
   {
      printf("请输入第%d个学生的成绩:\n");
      scanf("%d",&arr[i]);
    }
    int j;
    for(j=0;j<10;j++)
    {
       for(i=j;i<10;i++)
         {
            if(arr[j]>arr[i])   //  判断 arr[j]>arr[i] ,条件成立则将arr[j]与 arr[i]交换
              {
                      int temp=arr[j];
                      arr[j]=arr[i];
                      ar[i]=temp;
               }
          }
     }

    for(i=0;i<10;i++)
    {
       printf("%d",&arr[i]);
     }

return 0;
}

插入法:

#include<stdio.h>
int main()
{
   int arr[7]={2,4,5,23,45,78};
   int num;
   printf("请输入一个数字:\n",num);
   scanf("%d",&num);
   int i=0;          //初始化为0
   int index=6;
   for(;i<6;i++)
   {
       if(num>=arr[i]&&num<arr[i+1]) //判断输入的值大于等于前一项且小于后一项时,成立则将这个值插入后一项
        {
            index=i+1;
            break;
         }
       if(num<arr[0]) //判断输入的值小于第一项,成立则这个值放在第一项
        {
            index=0;break;
         }
   }
   for(i=6;i>index;i--)
   {
       arr[i]=arr[i-1];
    }
   arr[index]=num;
   for(i=0;i<7;i++)
    {
        printf("%d",arr[i]);
     }

return 0;
}
时间: 2024-12-23 17:54:52

C语言中常见的排序方法的相关文章

C语言常见的排序方法——冒泡法、选择法、插入法

当我们要对C中一组数据进行排序是常见的排序方法有冒泡法.选择法.插入法 冒泡排序法(升序):假设一组数据a[0].a[1].a[2].a[3]...a[n],第一轮:先比较a[0]与a[1].a[1]与a[2]...a[i]与a[i+1]...a[n-1]与a[n]的大小,如果a[i]与a[i+1]不是升序(即a[i] > a[i+1]),那么就将a[i]与a[i+1]的值互换,第一轮过后,a[n]就是最大值:第二轮:运用第一轮同样的方法,比较a[0]与a[1].a[1]与a[2]...a[i]

C语言中常见的内存错误与解决方法

常见的错误 关于内存的一些知识已在内存分配中提及,现记录与分享常见的内存错误与对策. 类型 1:内存未分配成功,却使用了它. 方   法:在使用之前检查指针是否为NULL. 1)当指针p是函数的参数时,在函数入口处用语句assert(p!=NULL)进行断言检查. 2)当使用malloc或new来申请内存时,应该用if(p != NULL)进行防错检查. 类型 2:引用了尚未初始化的指针 原   因:内存的缺省初始值究竟是什么并没有统一的标准,在使用之前都进行初始化. 1)没有初始化的观念. 2

Swift语言中的属性,方法,下标脚本以及继承

从这篇章节起,Swift编程语言指南大部分的重要内容在于概念,代码并不是太多.理解Swift的面向对象理念,语法以及类结构,构造析构过程对于很好的应用Swift语言将会有比较大的帮助. 属性 存储属性 存储属性通常是那些可以通过直接赋值,或者直接访问成员能够获得的属性类型. 它有些要注意的地方: 若一个结构体被声明为常量,则子属性无法被修改了.在Objective-C中,我们总是无法修改结构体的子属性,但是swift却可以,不过这种情况是个例外,当你存储型属性是个结构体并且是个常量,那你就不要再

常见的排序方法

常见经典排序算法 1.希尔排序 2.二分插入法 3.直接插入法 4.带哨兵的直接排序法 5.冒泡排序 6.选择排序 7.快速排序 8.堆排序 一.希尔(Shell)排序法(又称宿小增量排序,是1959年由D.L.Shell提出来的) /* Shell 排序法 */ #include <stdio.h> void sort(int v[],int n) { int gap,i,j,temp; for(gap=n/2;gap>0;gap /= 2) /* 设置排序的步长,步长gap每次减半,

[麦先生]PHP面向对象中常见的魔术方法以及关键字

麦先生引言:在学习php面向对象的编程思想中,我们会遇到很多的能够自动调用的魔术方法,每个魔术方法都有其特定的触发场景,但其根本目的是在于编写和实际使用过程中阻止程序报错而生; 常见的魔术方法有:music=> gusic(根据首字母拼音大写由gusic联想到music)    以及构造,析构方法,以及特殊的关键字fsci -- cats 和 ai 魔术方法                触发场景 <!--gusic---------------------------------------

C语言中宏定义使用方法详解

C语言中的宏替换详解 首先看一个问题: #include <stdio.h> #define    PRINT_CLINE()    printf("%d", ______) int main(void) { PRINT_CLINE(); PRINT_CLINE(); return 0; } 在横线处填上适当的代码,使得上面这段代码的输出为34. 我想一般人看到这个问题的时候头脑里都没有明确的思路来解答这个它.我看到这个问题的时候想出了各种办法来解答它,最终还是没有通过编译

C#中的个别排序方法

C#学习中的一些算法排序,不完整, @^_^@ -------- 2016-10-23 *************************************************************************************************** 1.冒泡排序 对比相邻的元素值,满足条件就交换两个元素的位置,把较小的移到数组前边,较大的数移到数组后边,这样较小的元素就像气泡上升到前面,较大的像气泡移到后边. 1 class Program 2 { 3 st

iOS中数组的排序方法

1函数介绍与实例 函数一:- (void)sortUsingSelector:(SEL)comparator; 适用于数组中的元素自带比较函数时: 数组排序函数,调用该函数的对象为数组,comparator是调用该函数的数组中的元素的方法.函数参数类型为数组中的元素类型或者id类型,在调用时不需要传递参数,排序过程不可见,该函数执行时:循环取出各个元素,进行比较,然后放到合适的位置 使用实例: 将数组中的元素按照字符串大小排序: NSMutableArray*array = [[NSMutabl

【总结】C语言中常见的字符串处理函数

------------------------------------------------------------------------------------------- C语言中没有字符串类型,但是为了方便对字符串进行操作,提供了许多字符串处理函数.如: 输入输出字符串,字符串的拷贝,连接,比较等操作函数.值得注意的是:在使用输入输出,即gets. puts函数时应该引入头文件<stdio.h>.在使用其他操作函数时,引入头文件<string.h>.另外,在使用连 接