选择排序-最基本版本

选择排序的思想:
假设现在有一堆数据,需要排序。首先选择第一个数据和剩下的所有数据做比较,找到最大的或者最小的数据,和第一个数据交换位置,这样第一个位置的数据肯定是最大或者最小的。再对剩下的数据,重复上面的操作,在剩下的数据里面,选择第一个数据和剩下的所有数据做比较,找到最大的或者最小的数据,和剩下的数据里面的第一个数据交换位置,这样前2个位置就是最大的或者最小的、次最大的或者次最小的。照此循环,数据就排好序了。

参考代码:

 1 //arr:待排序的数组,length:待排序数组的长度
 2 void SelectSort(int arr[],int length)
 3 {
 4     int i,j,tmp;
 5     for( i = 0; i < length-1; ++i)
 6     {
 7         for(j = i+1; j < length; ++j)
 8         {
 9             // >:升序 <:降序
10             if(arr[i] > arr[j])
11             {
12                 //交换数组中2个元素
13                 tmp = arr[j];
14                 arr[j] = arr[i];
15                 arr[i] = tmp;
16             }
17         }
18     }
19 }
时间: 2024-10-29 10:46:01

选择排序-最基本版本的相关文章

选择排序(javascript版本)

基本过程 1. 遍历数组 2. 将当前元素与后面的元素进行比较,将最小的元素换到首位 3. 继续2中的步骤,直至数组只有最后两个元素比较,排序完成 javascript实现 function fSelectSort(arr){ var len=arr.length,temp=0; for(var i=0;i<len-2;i++){ var min = arr[i],index=i; //find min element for(var j=i+1;j<len-1;j++){ if(min &g

选择排序的3种语言实现方法(C java python)

1.选择排序的思路是:遍历数组,第一遍找出所有成员的最小值,放到数组下标为0的位置,第二遍从剩余内容中,再次找出最小值,放到数组下标为1的位置,以此类推,遍历完成所有的数组内容,最后结果就是:数组是按照从小到大顺序进行排序的. 2.按照C语言.java.python的顺序,分别实现如下,在对应编译平台上都是编译通过的: C语言版本: #include <stdio.h> int main() { int i; int j; int temp; int origin[] = {2,1,4,3,5

选择排序基础(java实现)

算法实现: 红宝书版本: public class Selection { public static void sort(Comparable[] a) { int N=a.length; for (int i=0;i<N;i++) { int min=i; for(int j=i+1;j<N;j++) if (lessa([j],a[min])) min =j; exch(a,i,min); } } } 基于int数组的实现: public static void selectSort(i

【算法】简单选择排序C语言实现

上一篇我们谈到了冒泡排序,实现了两个版本的冒泡排序,不知道大家有没有对冒泡排序的特点进行一下总结呢?其实冒泡排序还算是比较暴力的,因为它频繁不断的进行交换,那么这样的话,我们的计算机的计算频率就会很高,不算是很高效,那么我们可不可以找到一种交换次数少一点的方法呢?这就引出了我们接下来要介绍的简单选择排序算法了. 简单选择排序的基本思想就是通过N-1次的关键字间的比较,从N - i + 1个记录中选择一个关键字最小记录,并和第i(1<= i <= n)个记录交换,其实简单选择排序和冒泡排序在思路

排序 之 冒泡排序 简单选择排序 直接插入排序 希尔排序

排序的基本概念 假设含有n个记录的序列为{r1,r2,--,rn},其相应的关键字分别为{k1,k2,--,kn},需确定1,2,--,n的一种排序p1,p2,--,pn,使其相应的关键字满足kp1≤kp2≤--≤kpn非递减(或非递增)关系,即使得序列称为一个按关键字有序的序列{rp1,rp2,--,rpn},这样的操作就称为排序. 排序的稳定性 假设ki=kj(1≤i≤n,1≤j≤n,i≠j),且在排序前的序列中ri领先于rj(即i<j).如果排序后ri仍领先于rj,则称所用的排序方法是稳定

排序算法(三)冒泡、选择排序的Python实现及算法优化详解

说在前面 最近一年太忙,博客长草了.近日用Python实现了常用排序算法,供大家参考. Java版本排序算法及优化,请看以前的文章. <排序算法之简单排序(冒泡.选择.插入)> <排序算法(二)堆排序> 1.排序概念 这里不再赘述,请参看前面2篇文章 2.简单排序之冒泡法Python实现及优化 原理图 2.1.基本实现 num_list = [     [1, 9, 8, 5, 6, 7, 4, 3, 2],     [1, 2, 3, 4, 5, 6, 7, 8, 9] ] nu

常见排序算法的实现(归并排序、快速排序、堆排序、选择排序、插入排序、希尔排序)

这篇博客主要实现一些常见的排序算法.例如: //冒泡排序 //选择排序 //简单插入排序 //折半插入排序 //希尔排序 //归并排序 //双向的快速排序 //单向的快速排序 //堆排序 对于各个算法的实现原理,这里不再多说了,代码中注释较多,结合注释应该都能理解算法的原理,读者也可自己google一下.另外,注释中有很多点,比如边界条件.应用场景等已经用 * 标记,* 越多,越应该多注意. 下面是实现: //冒泡排序 void BubbleSort(int *arr, int n) { if(

排序五 简单选择排序

要点 简单选择排序是一种选择排序. 选择排序:每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止. 简单排序处理流程: ( 1 )从待排序序列中,找到关键字最小的元素:( 2 )如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换:( 3 )从余下的 N - 1 个元素中,找出关键字最小的元素,重复( 1 ).( 2 )步,直到排序结束. 如图所示,每趟排序中,将当前第 i 小的元素放在位置 i 上. 核心代码 public void selec

这可能是我见过最详细的选择排序!

关于选择排序,网上,和维基都有完成的解释,他们都是......,俺觉得都是,太过于总结话语在概述一些东西: 而我却从最本质的东西,一步一步的深入:在深入的学习过程中,我得到如下非代码层面上的感悟: 1.一个完整的模式(代码或者其他东西)都是通过没有=>part0=>part1=>part2>version0=>viersion1.......versionN=>perfect  最后达到一个完成的形式: 如果你只是去学习和体会最后的那一个完成的版本,而没有经历整个探索的