• 排序(1)---------选择排序(C语言实现)


    选择排序的基本思想:

    选择排序(Selection sort)是一种简单直观的排序算法。

    它的工作原理例如以下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

    以此类推。直到全部元素均排序完成。

    我的通俗解释:

    ①第一遍先在整个序列中寻找到最小值。将其移到首位,序列被分为1,n-1;

    ②继续在n-1中寻找最小值,将其移到n-1的首位,也就是整个序列的第二位

    ③以此类推,重复操作步骤②,得到结果



    选择排序的主要长处与数据移动有关。假设某个元素位于正确的终于位置上,则它不会被移动。选择排序每次交换一对元素,它们其中至少有一个将被移到其终于位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。

    在全部的全然依靠交换去移动元素的排序方法中,选择排序属于很好的一种。


                                  


    源码:

    // 排序.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <stdlib.h>
    
    void Select_Sort()
    {
    	int arr[10];
    	
    	for ( int i=0; i<10; i++)  //初始化数据
    	{
    		arr[i] = rand()%30;  //随机生成数据
    	}
    	printf("Before sort:
    ");  //打印排序前的数据
    	for (int i = 0; i < 10; i++)
    	{
    		printf("%d ",arr[i]);
    	}
    
    	//開始排序	
    	int min = 0;  //假定最小值下标的为0
    	for (int i = 0; i < 10 - 1; i++)
    	{
    		min = i;
    		for (int j = i + 1; j < 10; j++)
    		{
    			if (arr[min] > arr[j])
    			{
    				min = j;
    			}			
    		}
    		
    		if (min != i)  //假设min == i 则证明当前后半部分的第一个下标的元素即为最小值,不须要做不论什么操作。否则交换之
    		{
    			int temp = arr[min];
    			arr[min] = arr[i];
    			arr[i] = temp;				
    		}
    		
    	}
    	printf("
    After sort:
    "); //打印排序后的数据
    	for (int i = 0; i < 10; i++)
    	{
    		printf("%d ",arr[i]);
    	}
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	Select_Sort();
    
    	printf("
    ");
    	system("pause");
    	return 0;
    }
    

    执行结果:

    Before sort:
    11 17 4 10 29 4 18 18 22 14
    After sort:
    4 4 10 11 14 17 18 18 22 29
    请按随意键继续. . .


    如有错误,望不吝指出。



  • 相关阅读:
    用户管理 之 Linux 系统中的超级权限的控制
    硬件管理 之 存储设备分区操作及文件系统管理概述
    用户管理 之 Linux 用户(User)查询篇
    软件工程——需求工程
    自动装载模块
    管理内核模块
    模块功能的注册和取消
    编程实现将任意的十进制整数转换成R进制数
    数据流图分析与设计
    软件工程——系统工程
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6944886.html
Copyright © 2020-2023  润新知