zoukankan      html  css  js  c++  java
  • 7.4选择排序

    7.4.1直接选择排序

    #include <stdio.h>
    #define N 10
    
    void print(int *arr, int n);//打印数组
    void SelectSort(int *arr, int n);//直接选择排序
    
    void main()
    {
    	int arr[N] = { 9,8,7,6,5,4,3,2,1,0 };
    
    	print(arr, N);//打印数组
    
    	SelectSort(arr, N);//直接选择排序
    
    	print(arr, N);
    }
    
    void print(int *arr, int n)//打印数组
    {
    	int i = 0;
    
    	for (i = 0; i < 10; i++)
    	{
    		printf("%d ", arr[i]);
    	}
    	printf("
    ");
    }
    
    void SelectSort(int *arr, int n)//直接选择排序
    {
    	int i, j;
    	int min;
    	int temp;
    
    	for (i = 0; i < n - 1; i++)//做n-1趟排序
    	{
    		min = i;//设min为第i趟排序中关键字最小的记录位置
    
    		for (j = i + 1; j < n; j++)//在[i...n]选择关键字最小的记录
    		{
    			if (arr[j] < arr[min])
    			{
    				min = j;//若有比arr[min]小的记录,记住该位置
    			}
    		}
    
    		if (min != i)//与第i个记录交换
    		{
    			temp = arr[i];
    			arr[i] = arr[min];
    			arr[min] = temp;
    		}
    	}
    }
    

    不带头结点的单链表,链表头指针为head

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct node
    {
    	int data;
    	struct node *next;
    }ListNode;
    
    void insert(ListNode *head, int x);//插入
    void print(ListNode *head);//打印
    void SelectSortList(ListNode *head);//直接选择排序法
    
    void main()
    {
    	ListNode *head = (ListNode *)malloc(sizeof(ListNode));
    	head->data = 3;
    	head->next = NULL;
    
    	insert(head, 2);//插入
    	insert(head, 1);
    
    	print(head);//打印
    
    	SelectSortList(head);//直接选择排序法
    
    	print(head);//打印
    }
    
    void insert(ListNode *head, int x)//插入
    {
    	ListNode *p = head;
    
    	if (!p)
    	{
    		return;
    	}
    
    	while (p->next)
    	{
    		p = p->next;
    	}
    
    	ListNode *s = (ListNode *)malloc(sizeof(ListNode));
    	s->data = x;
    	s->next = NULL;
    
    	p->next = s;
    }
    
    void print(ListNode *head)//打印
    {
    	ListNode *p = head;
    
    	while (p)
    	{
    		printf("%d ", p->data);
    		p = p->next;
    	}
    
    	printf("
    ");
    }
    
    void SelectSortList(ListNode *head)//直接选择排序法
    {
    	ListNode *p, *q, *r;
    	int temp;
    	p = head;
    
    	while (p)
    	{
    		q = p;
    		r = p->next;
    
    		while (r)
    		{
    			if ((q->data) > (r->data))
    			{
    				q = r;
    			}
    
    			r = r->next;
    		}
    
    		temp = p->data;
    		p->data = q->data;
    		q->data = temp;
    
    		p = p->next;
    	}
    }
    
  • 相关阅读:
    JavaScript事件冒泡简介及应用
    个人作业——软件工程实践总结&个人技术博客
    个人技术总结
    个人作业——软件测评
    寒假作业(2/2)
    寒假作业(1/2)
    gitlab-ci.yml可用关键字描述
    gitlab-Runner配置参数详解
    gitlab-ci部署实现持续集成(centos7)
    linux时间同步操作命令
  • 原文地址:https://www.cnblogs.com/denggelin/p/5780586.html
Copyright © 2011-2022 走看看