排序的概念(选择排序1)

                                     排序(比较与交换)
排序的稳定性:
    排序之前,R[i]在R[j]前面,排序后,R[i]还在R[j]前面,则这个排序方法是稳定的。否则这个排序
 方法是不稳定的。
 外排序:----依赖---》内排序
     待排序的数据元素数量很大,整个序列的排序过程不可能在内存中完成。
 内排序:
     整个排序过程不需要访问外存便能完成。
                                      排序的审判
 1:时间性能(重要)
    关键性能差异性体现在比较和交换的数量。
 2:辅助存储空间
     为完成排序操作需要的额外的存储空间。
     必要时可以时间换空间。
 3:算法的实现复杂性
     过于复杂的排序算法会影响代码的可读性和可维护性,也可能会影响排序的性能。

选择排序

基本思想:

每一趟在后面n-i个待排的数据元素中选出关键字最小的元素,作为有序元素序列的第i个元素。

实例: js

<script type="text/javascript">

function Arithmetic(){

}

Arithmetic.selection=function(a){

var min =0;

var max =0;

for(var i=0;i<a.length;i++){

min=i;//标记最小

for(var j=i;j<a.length-1;j++){

if(a[min]>a[j+1]){

min=j+1;

}//找出最小并标记

}

max=a[i];


a[i]=a[min];//交换

a[min]=max;

}

console.log(a);

}

var arr =[8,4,2,7,1,42,20,5,1,0,2,7];

Arithmetic.selection(arr);

</script>

时间: 2024-10-25 10:50:46

排序的概念(选择排序1)的相关文章

插入排序 | 冒泡排序 | 希尔排序 | 堆排序 | 快速排序 | 选择排序 | 归并排序

以下是最近学习各种算法的代码实现: #include <stdlib.h> #include <stdio.h> #include <time.h> #include <limits.h> typedef int EleType; typedef int (*CompFunc)(void *,void *); int IntComp(void * a,void *b) { if(*(int *)a > *(int *)b) return 1; if(*

经典排序算法--简单选择排序

算法简介 简单选择排序是一种选择排序. 选择排序:每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止. 白话理解 依然已排队为例,在排队时,有的老师可能会选择这样排序,先在一列中选出最矮的,放在第一位,然后选出第二矮的,放在第二位.队伍完成排序.而这就是选择排序的思想. 简单排序处理流程 (1)从待排序序列中,找到关键字最小的元素: (2)如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换: (3)从余下的 N - 1 个元素中,找出关键字最小

数据结构排序算法之选择排序

今天继续介绍一种排序算法:选择排序. 选择排序的基本思想就是从待排序列中选择出最小的,然后将被选出元素和序列的第一个元素互换位置(当前默认是升序排列),则互换完成后第一个元素就是整个序列的最小的元素,则一次选择排序结束.然后我们从剩下的子序列中选择出最小的,然后将该被选出来的元素和该子序列的第一个元素(即整个序列的第二个元素)互换位置,则当前整个序列的第二个元素就是当前序列中的次最小值,第二次选择排序结束.以此类推,直到该待排序列只剩下一个元素后,则整个序列有序. 具体过程如下图所示: 下面就不

排序算法之选择排序

一. 算法描述 选择排序:在一个长度为N的无序数组中,在第一趟遍历N个数据,找出其中最小的数值与第一个元素交换,第二趟遍历剩下的N-1个数据,找出其中最小的数值与第二个元素交换......第N-1趟遍历剩下的2个数据,找出其中最小的数值与第N-1个元素交换,至此选择排序完成. 二. 算法分析 平均时间复杂度:O(n2) 空间复杂度:O(1)  (用于交换和记录索引) 稳定性:不稳定 (比如序列[5, 5, 3]第一趟就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面) 三. 算法实现

算法学习之排序算法:选择排序

选择排序:每一趟在n-i+1(i=1,2,...,n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录. 一.简单选择排序 一趟选择排序操作: 通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录交换之. 对L[1...n]中记录进行简单选择排序的算法为:令i从1至n-1,进行n-1趟选择操作.简单选择排序过程中,所需进行记录移动的操作次数较少,然而,无论记录的初始排列如何,所需关键字间的比较次数相同.因此,总的时间复杂度为O(n^2)

排序算法——直接选择排序

直接选择排序每一趟排序都会从未排序的序列中选择出最小的元素来,然后跟未排序序列的第一个元素交换.这样经过n-1趟排序后,每趟排序选择出的 最小元素便成了有序的序列. 算法实现如下: #include <stdio.h> #include <stdlib.h> void SelectSort(int A[],int n) { int i, j, index, temp; for(i = 0; i < n-1; i++) // 进行n-1趟排序 { index = i; // 辅

选择式排序法之选择排序法实现 -java版

计算算法时间复杂度比冒泡快一点 选择排序法核心思想是,第一次从R[0] ~R[n-1]中选择最小值然后与R[0]交换,第二次从R[1] ~R[n-1]中选取最小值与R[1]交换---第i次呢就是从R[i-1] ~R[n-1]中选取最小值,与R[i-1]元素交换:对于一个含有n个元素的数组,最多交换n-1次就得到了一个排序码从小到大的有序序列. package com.PengRong.A; import java.util.*; /** * * @author PengRong * */ pub

排序高级之选择排序_选择排序

选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾.以此类推,直到所有元素均排序完毕. 选择排序的主要优点与数据移动有关.如果某个元素位于正确的最终位置上,则它不会被移动.选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换.在所有的完全依靠交换去移动元素的排序方

选择排序算法---直接选择排序和堆排序

本文主要是解析选择排序算法:直接选择排序和堆排序. 一.直接选择排序   基本思想:       选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾.以此类推,直到所有元素均排序完毕. 选择排序的主要优点与数据移动有关.如果某个元素位于正确的最终位置上,则它不会被移动.选择排序每次交换一对元素,它们当中至少有一个将被移到其最终