btcq.net
当前位置:首页 >> 简单选择排序算法 >>

简单选择排序算法

在冒泡排序的基础上稍加了修改,感觉很简单,相关的注释和说明参看我写在你的冒泡排序问题中的内容.程序代码如下,仅供参考:# include "stdio.h"# include "time.h"# include "stdlib.h"# define N 400 void init(int a[],int n){ int i; srand

选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完.数据:28,55,4,24,15,53,69,23,8,按从小到大排

二、选择排序 已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列.首先比较a[1]与a[2]的值,若a[1]大于a[2]则交换两者的值,否则不变.再比较a[1]与a[3]的值,若a[1]大于a[3]则交换两者的值,否则不变.再比较a[1]与a[4],以此类推,

void SelectSort(SqList &L) { int i,j,k; //请将该算法补充完整 for (int i=1; i<L.length; i++) { KeyType min = L.r[i].key; k = i; for (int j=i+1; j<=L.length; j++) { if (L.r[j].key < min) { min = L.r[j].key; k = j; } } RedType rt = L.r[k]; L.r[k] = L.r[i]; L.r[i] = rt; } }

在简单选择排序过程中,所需移动记录的次数比较少.最好情况下,即待排序记录初始状态就已经是正序排列了,则不需要移动记录.最坏情况下,即待排序记录初始状态是按第一条记录最大,之后的记录从小到大顺序排列,则需要移动记录的次数最多为3(n-1).简单选择排序过程中需要进行的比较次数与初始状态下待排序的记录序列的排列情况无关.当i=1时,需进行n-1次比较;当i=2时,需进行n-2次比较;依次类推,共需要进行的比较次数是(n-1)+(n-2)+…+2+1=n(n-1)/2,即进行比较操作的时间复杂度为O(n^2),进行移动操作的时间复杂度为O(n).简单选择排序是不稳定排序.

就是叫法不一样,其实两者完全一致

列每趟简单选择排序的结果:0)70.83.100.65.10.32.7.91)7.83.100.65.10.32.70.92)7.9.100.65.10.32.70.833)7.9.10.65.100.32.70.834)7.9.10.32.100.65.70.835)7.9.10.32.65.100.70.836)7.9.10.32.65.70.100.836)7.9.10.32.65.70.83.100

排序算法一般分为以下几种: (1)非线性时间比较类排序:交换类排序(快速排序和冒泡排序)、插入类排序(简单插入排序和希尔排序)、选择类排序(简单选择排序和堆排序)、归并排序(二路归并排序和多路归并排序);(2)线性时间非比较类排序:计数排序、基数排序和桶排序.

#include #define MAX 10#define SWAP(x,y) {int t;t = x;x = y;y = t;}insert_sort(int a[],int printf("排序前:"); for(i = 0; i printf("%d ",a[i]); } insert_sort(a,MAX); //select_

选择排序:第一轮:16,9,28,45,35,8,6第二轮:16,9,28,45,35,8,6第三轮:16,35,28,45,9,8,6第四轮:45,35,28,16,9,8,6结束冒泡排序:第一轮:16,28,9,35,8,45,6第二轮:28,16,35,9,45,8,6第三轮:28,35,16,45,9,8,6第四轮:35,28,45,16,9,8,6第五轮:45,35,28,16,9,8,6结束

knrt.net | ppcq.net | sbsy.net | tfsf.net | kcjf.net | 网站首页 | 网站地图
All rights reserved Powered by www.btcq.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com