• 选择排序 分类: 算法 c/c++ 2014-10-10 20:32 509人阅读 评论(0) 收藏


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

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

    时间复杂度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
    ",q->data);
    		q=q->next;
    	}
    	return 0;
    }


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

  • 相关阅读:
    单元测试练习
    对软件的看法
    个人最终总结
    论文笔记--Fast RCNN
    个人最终总结2
    结对编程--基于android平台的黄金点游戏(2.0版本)
    结对编程--基于android平台的黄金点游戏
    团队作业(一)
    [java]wordcount程序
    第三周作业(二)
  • 原文地址:https://www.cnblogs.com/luo-peng/p/4646238.html
Copyright © 2020-2023  润新知