zoukankan      html  css  js  c++  java
  • 选择排序 分类: 算法 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;
    }


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

  • 相关阅读:
    0055. Jump Game (M)
    0957. Prison Cells After N Days (M)
    Java
    Java
    Java桌面应用程序打包
    JavaGUI练习
    Java贪吃蛇小游戏
    Java GUI编程
    Java异常处理机制
    抽象类与接口
  • 原文地址:https://www.cnblogs.com/luo-peng/p/4646238.html
Copyright © 2011-2022 走看看