2018-09-13第三次课

学写简书

c语言排序算法

两种方法:选择与冒泡

  • 选择排序:
    首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
    特点
    若按降序排列,第一次比较:则是将数组的第一个元素与数组中从第二个元素开始到最后的元素进行比较找到最大的数记录下来然后将值赋值给数组的第一个元素,然后进行第二次比较:则是将数组的第二个元素与数组中从第三个元素开始到最后的元素进行比较,找最大的数记录下来将值赋值给数组的第二个元素。。。依次循环找完。
    image.png

    代码:
#include<stdio.h>
void SelectionSort(int *num,int n)
{
 int i = 0;
 int min = 0;
 int j = 0;
 int tmp = 0;
 for(i = 0;i < n-1;i++)
 {
    min = i;//每次讲min置成无序组起始位置元素下标 
    for(j = i;j < n;j++)//遍历无序组,找到最小元素。 
      {
      if(num[min]>num[j])
          {
       min = j;
           }
        }
    if(min != i)//如果最小元素不是无序组起始位置元素,则与起始元素交换位置 
    {
      tmp = num[min];
      num[min] = num[i];
      num[i] = tmp;
    }
 }
}
 
int main()
{
 int num[6] = {5,4,3,2,9,1};
 int i = 0;
 SelectionSort(num,6);//这里需要将数列元素个数传入。有心者可用sizeof在函数内求得元素个数。 
 for(i = 0;i < 6;i++)
 {
   printf("%d ",num[i]);
 }
 return 0;
}

来源:
C语言选择排序详解及其实现

  • 冒泡排序:
    它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名“冒泡排序”。
    特点
  1. 比较相邻的元素。如果第一个比第二个大,就交换它们两个;
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
  3. 针对所有的元素重复以上的步骤,除了最后一个;
  4. 重复步骤1~3,直到排序完成。
    image.png

    代码:
#include<stdio.h>
#include<stdlib.h>
void bubblesort(int *p,int len)
{
int i = 0;
int j = 0;
for(i = 0;i<len-1;i++)
{
/*每排序一趟,则至少有一个元素已经有序,
用 j<len-i-1 可以缩小排序范围 */
for(j = 0;j<len -1-i;j++)
{
/*当前面的元素大于后面的元素时,交换位置*/
if(p[j]>p[j+1])
{
int tmp = p[j];
p[j] = p[j+1];
p[j+1] = tmp;
    }
}
}
}
int main()
{
int num[5]={3,1,5,6,2};
int i=0;
bubblesort(num,5);
for(i=0;i<5;i++)
{
printf("%d ",num[i]);
}
return 0;
} 
printf("%d ",num[i]);
}
return 0;
} 

来源:
冒泡排序算法及其优化

主函数为int main()中的内容。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文首发于我的个人博客:尾尾部落 排序算法是最经典的算法知识。因为其实现代码短,应该广,在面试中经常会问到排序算法...
    繁著阅读 4,671评论 3 118
  • 排序算法说明 (1)排序的定义:对一序列对象根据某个关键字进行排序; 输入:n个数:a1,a2,a3,…,an 输...
    code武阅读 737评论 0 0
  • 认识"简书"缘于自己也曾想开创一个交流的平台,前几天刚毕业几年的小姑娘A跟我谈起工作后的迷茫,同时即将踏入婚姻围城...
    techiezhang阅读 150评论 0 0
  • 这篇文章最符合我当下心境,分享下: 你观察过天上的云吗?你注意看,有时候云的形状就好像一朵花,然后它开始改变,变成...
    丹灵雅音阅读 162评论 0 0
  • 这一天,天还没亮,遥远的天空上还依稀有几颗淡淡的星星,整个天空都黑乎乎的,树林里漆黑一片,什么也看不见。松鼠爸爸睁...
    一叶兰芷阅读 1,032评论 0 3

友情链接更多精彩内容