精华内容
下载资源
问答
  • 直接选择排序算法

    热门讨论 2016-11-13 21:51:10
    直接选择排序算法

             选择排序的基本思想为:每次在n-i+1个无序记录中选取键值最大或最小的记录作为有序序列的第i个记录。

             直接选择排序作为选择排序的一种,整体思想与选择排序的思想一致,直接选择排序在第i次选择操作中,经过n-i-1次比较,选出最小的记录并和第i个记录交换(从这点来看,我不能明白和交换排序有什么不一样的?)

             直接选择排序的算法如下:

    void SelectSort(List R,int n)
    {
    	int min,i,j;
    	for(i=1;i<n;i++)
    	{
    		min=i;
    		for(j=i+1;j<=n;j++)
    		{
    			if(R[j].key<R[min].key)
    				min=j;
    			if(min!=i)
    				swap(R[min],R[i]);
    		}
    	}
    }


    展开全文
  • C语言代码 直接插入法排序算法fun1,冒泡排序排列算法fun2,直接选择法排序算法fun3。
  • 直接选择排序(Bubble Sort)是一种典型的选择排序算法,通过不断选择序列中最大(小)的元素。 一、算法基本思想 (1)基本思想 直接选择排序的基本思想就是:不断从未排序队列中选择最大(小)的元素放...

    直接选择排序(Straight Select Sort)是一种典型的选择排序算法,通过不断选择序列中最大(小)的元素。


    一、算法基本思想

    (1)基本思想

    直接选择排序的基本思想就是:不断从未排序队列中选择最大(小)的元素放到已排序队列队尾,直至所有元素都排好序。

    (2)运行过程

    直接选择排序算法的运作如下:

    1、首先在原始序列中找到最小(大)元素,存放到排序序列的起始位置

    2、再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

    3)重复第二步,直到所有元素均排序完毕。


    (3)示例


    二、算法实现(核心代码)

    C++实现:

    void selection_sort(int arr[], int len)
    {
      int i, j, min;
      for (i = 0; i < len - 1; i++) 
      {
         min = i;
         for (j = i + 1; j < len; j++)
            if(arr[min] > arr[j])
    	       min = j;
         swap(arr[i], arr[min]);
      }
    }

    Java实现:

    public void selection_sort(int[] arr) {
    	int i, j, min, temp, len = arr.length;
    	for (i = 0; i < len - 1; i++) {
    		min = i;
    		for (j = i + 1; j < len; j++)
    			if (arr[min] > arr[j])
    				min = j;
    		temp = arr[min];
    		arr[min] = arr[i];
    		arr[i] = temp;
    	}
    }

    三、性能(算法时间、空间复杂度、稳定性)分析

    直接选择排序平均时间复杂度为O(n^2);空间复杂度为O(1);是不稳定的排序算法

    原始序列: 21,25,49,25*,16,08
    排序后:08,16,   21,25*,25,49
    两个25的位置变化了,所以是不稳定的。


    展开全文
  • C++排序之直接选择排序法

    千次阅读 2017-02-06 14:54:38
    直接选择排序算法是一种简单直观的排序算法。它首先在未排序序列中找到最小(大)元素,存放到排序序列的其起始位置,然后再从剩余未排序的序列元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,...

    直接选择排序算法是一种简单直观的排序算法。它首先在未排序序列中找到最小(大)元素,存放到排序序列的其起始位置,然后再从剩余未排序的序列元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素排序完毕。

    代码实现如下:

    #include <iostream>
    
    using namespace std;
    
    void print(int a[], int n )
    {  
    	cout<<n <<":";  
    	for(int j= 0; j<n; j++)
          {  
    		cout<<a[j] <<" ";  
    	}  
    	cout<<endl;  
    }  
    
    void InsertSort(int a[], int len)  
    {  
    	for (int i=0; i<len-1; i++)  
    	{  
    		int k = i;  
    		int key = a[i];  
    		for (int j=i+1; j<len; j++)  //找出剩余数据中最小的数
    		{  
    			if (a[j]< key)  
    			{  
    				k = j;  
    				key = a[j];  
    			}  
    		}  
    		if (k!=i)  
    		swap(a[i], a[k]);  
    	}  
    }  
    
    int main(){  
    	int a[9] = {3,1,5,7,2,4,9,6,6};  
    	InsertSort(a,9);  
    	print(a,9);  
    }  
    排序结果如下:

         9:1 2 3 4 5 6 6 7 9

    以上的算法是由小到大的排序方法,如果要由大到小排序,只需修改代码:if (a[j]< key) 为 if (a[j] > key) ,其他代码保持不变。



    展开全文
  • 基本思想直接选择排序是选择排序的一种,其排序速度比冒泡排序要快一些,是常用的排序算法之一。 其基本思想是的将指定排序位置与其他数组元素分别比较,如果满足条件就交换元素值。注意,这里与冒泡排序的区别...

    这里写图片描述

    基本思想

    直接选择排序是选择排序的一种,其排序速度比冒泡排序要快一些,是常用的排序算法之一。
    其基本思想是的将指定排序位置与其他数组元素分别比较,如果满足条件就交换元素值。注意,这里与冒泡排序的区别是不是交换相邻元素,而是把满足条件的元素与指定的排序位置交换,这样排序好的位置逐渐扩大,最后整个数组都成为已排序好的数组。

    算法示例

    每一趟从待排序的数组元素中选出最小的或最大的一个元素,顺序放在已排序好的数列的最后,直到全部待排序的数据元素排完。

    如:
    初始数组【5,14,9,2,11】

    第一趟排序后:【 5 ,11 ,9 ,2 】,14
    第二趟排序后:【 5 ,2,9 】,11 ,14
    第三趟排序后:【 5 ,2】,9 ,11 ,14
    第四趟排序后: 2 ,5,9 ,11 ,14

    程序实现

    SelectSort.java

    public class SelectSort {
    
        public static int[] run(int[] array) {
    
            for (int i = 0; i < array.length-1; i++) {
                int index = 0;
                for (int j = 0; j < array.length-i; j++) {
                    if (array[j] > array[index]) {
                        index = j;
                    }
                }
    
                int temp = array[array.length-1-i];
                array[array.length-1-i] = array[index];
                array[index] = temp;
            }
    
            return array;
        }
    
        public static void printInfo(int[] array) {
            // TODO Auto-generated method stub
            for(int k=0;k<array.length;k++){
                System.out.print(" "+array[k]);
            }
            System.out.print("\n");
        }
    
    }

    clent.java

    public class clent {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int[] array ={5,14,9,2,11};     
            System.out.print("排序前的数组为:\n");
            SelectSort.printInfo(array);
    
            //直接选择排序
            array = SelectSort.run(array);
    
            System.out.print("排序后的数组为:\n");
            SelectSort.printInfo(array);
        }
    }

    运行结果:

    排序前的数组为:
     5 14 9 2 11
    排序后的数组为:
     2 5 9 11 14
    展开全文
  • c语言——直接选择排序算法

    千次阅读 2018-12-05 15:34:27
    #include #include #include #define number 10 void xuanze(int a[],int n) { int i,j,t,k; for(i=0;... printf("排序后:\n"); for(i=0;i;i++) { printf("%d ",a[i]); } return 0; }  
  • 直接选择排序法是将指定排序位置与其他数组元素分别对比,如果满足条件就交换元素,注意区分冒泡排序,他不是交换相邻的,而是把满足条件的与指定位置的交换。比如array{7,8,6,5,9,3,1},指定把最大的放在最后一位,...
  • 给出一组关键字序列{29,18,25,47,58,12,51,10},分别给出用希尔排序、直接选择排序算法从小到大排序的结果。 参考施老师等编著的《数据结构》,本代码参考了赵同学的报告。 算法思想: 选择排序的基本思想是依次从待...
  • 目录 直接选择排序(Straight Selection Sort) ...直接选择排序是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找...
  • 排序算法-之选择排序(直接选择排序,堆排序)   一、排序算法分为:  1.插入排序(直接插入排序&希尔排序)  2.选择排序(直接选择排序&堆排序)  3.交换排序(冒泡排序&快速排序)  4.归并...
  • 排序算法六:选择排序声明:引用请注明出处http://blog.csdn.net/lg1259156776/引言在我的博文《“主宰世界”的10种...系列博文的前五篇分别讲述了插入排序和交换排序,本文介绍直接选择排序这一似乎是最慢的排序算法
  • //运用直接 选择排序法对整数数组元素按照从小到大顺序排序 #include #define SIZE 8 int main() { int a[SIZE]={18,35,36,61,9,112,77,12}; //输出原数组 for(int i=0;i;i++) cout[i]; //对数组
  • 前面两篇介绍了两种插入排序算法直接插入排序和希尔排序。这篇介绍选择排序的一种:直接选择排序。从名字就可以看出直接选择排序与直接插入排序很相似,两者相同点在与都是将待排序序列分成有序区和无序区两部分,...
  • 排序算法2:直接选择排序

    千次阅读 2018-08-21 23:21:37
    直接选择排序算法也是一种简单直观的算法,而且与冒泡排序算法只有一些小小的区别。 它的时间复杂度是O(n^2),空间复杂度O(1),它是不稳定的排序。(在数组中不稳定,在链表中稳定) 基本思想 之所以叫它直接...
  • 排序算法直接选择排序及Java实现

    千次阅读 2018-04-20 13:30:09
    选择排序是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 三、直接选择排序的实现 public...
  • 排序算法实例(冒泡排序、选择法排序、直接插入排序 、希尔排序、折半插入排序)
  • 直接选择排序(Straight Select Sorting) 也是一种简单的排序方法,它的基本思想是:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R[1]~R[n-1]中选取最小值,与R[1]交换 直接选择排序直接插入排序类似...
  • 直接选择排序直接插入排序类似,都将数据分为有序区与无序 区, 不同点: 直接插入排序是将无序区第一个元素直接插入到有序区形成 更大的有序区, 直接选择排序是从无序区选一个最小的元素直接放到有序区...
  • 本篇文章介绍直接选择排序算法的JAVA实现。  直接选择排序算法的基本思想是:n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:  ①初始状态:无序区为R[1..n],有序区为空。  ②第1趟排序 ...
  • 基本思想:n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果 第一次比较:程序将记录定位在数组的第一个位置,拿第一个数据与后面的每个数据对比,用一个变量mix记录比第一个数小的数据的索引,通过...
  • 本文主要讲述python中经常用的三种排序算法选择排序法,冒泡排序法和插入排序法及其区别。通过对列表里的元素大小排序进行阐述。 原文地址:https://blog.zeruns.tech/index.php/archives/297/ 一、选择排序法 ...
  • 八大排序算法直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,计数排序)
  • 直接选择排序算法思想(以从小到大为例): 1、从第一个元素开始,选出一个最小的元素与第一个元素互换; 2、继续从第二个元素开始,向后选出最小的元素,与第二个元素互换; 3、依次循环执行,直到最大的元素...
  • JS排序算法:冒泡法、快速排序法选择排序法、插入排序法、哈希排序//生成数组 var arr = new Array(1000); for (var i = 0; i ; i++) { arr[i] = (Math.round(Math.random() * 1000)); }1.冒泡法 排序思想:...
  • 选择排序直接选择排序

    千次阅读 2015-10-08 22:06:32
    选择排序之直接选择排序  直接选择排序思想:第一趟从n个元素的数据序列中选出最小/大的元素放到最前/后的位置,下一趟从n-1个元素中选出最小/...直接选择排序算法代码如下: import java.util.Scanner; public clas
  • 经典算法学习——直接选择排序

    千次阅读 2016-02-03 20:47:01
    直接选择排序直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接插入排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区;而直接选择排序是从无序区选一个最小的元素直接放到有序区的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 463,166
精华内容 185,266
关键字:

直接选择排序算法