选择排序(假设递增排序)

每次选取从当前结点到末尾结点中最小的一个与当前结点交换,每一轮固定一个元素位置。

时间复杂度O(n^2),空间复杂度O(1)。下面的示例代码以带头结点的链表为存储结构:

#include<stdio.h>
#include<stdlib.h>
#define Elemtype double
struct Node
{
Elemtype data;
struct Node *next;
};
void listsort(Node*h)
{
Node*p=h->next;
while(p!=NULL)
{
Node*q=p;
Node*k=p;
Elemtype min=p->data;
while(q!=NULL)
{
if(min>q->data)
{
min=q->data;
k=q;
}
q=q->next;
}
Elemtype tmp=p->data;
p->data=k->data;
k->data=tmp;
p=p->next;
}
}
int main()
{
Node*h=(Node*)malloc(sizeof(Node));
h->next=NULL;
for(int i=0;i<10;i++)
{
Node*p=(Node*)malloc(sizeof(Node));
scanf("%lf",&p->data);
p->next=h->next;
h->next=p;
}
listsort(h);
Node*q=h->next;
while(q!=NULL)
{
printf("%lf\n",q->data);
q=q->next;
}
return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

最新文章

  1. 使用最快速的方式激活windows10专业版
  2. SQL Server 自增字段重置
  3. Java实验1-文件IO
  4. .offsetLeft,.offsetTop
  5. Vim一些实用的用法
  6. 时间处理得到UTC时间
  7. 基于VMware的虚拟Linux集群搭建-lvs+keepalived
  8. bzoj2152
  9. Building [Security] Dashboards w/R &amp; Shiny + shinydashboard(转)
  10. python之进程----Queue
  11. C# -- FTP上传下载
  12. Redis主从配置和哨兵监控配置——服务器端环境搭建
  13. Linux下Samba的安装和使用
  14. 选择文件,显示其路径在ListBox控件里
  15. [原]CentOS 7.2 1511部署L2TP/IPsec服务器及客户端
  16. [1] 注解(Annotation)-- 深入理解Java:注解(Annotation)基本概念
  17. js中为什么你不敢用 “==”
  18. MVC 图片上传(转)
  19. Swing开发图形界面有如下优势
  20. Java并发编程学习路线

热门文章

  1. js:简单的拖动效果
  2. C++卷积神经网络实例:tiny_cnn代码具体解释(6)——average_pooling_layer层结构类分析
  3. Linux OpenSSH后门的加入与防范
  4. Input系统—ANR原理分析(转)
  5. 【Mongodb教程 第八课 】MongoDB 更新文档
  6. 10 逻辑完善以及bug修复
  7. 点滴记录——Ubuntu 14.04中Chrome浏览器标题栏出现中文乱码
  8. CronTab命令实例
  9. 訪问的网页自己主动打开QQ对话
  10. linux 下RTL8723/RTL8188调试记录(命令行)【转】