首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言排序算法选择排序

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

2.3K10
您找到你想要的搜索结果了吗?
是的
没有找到

选择排序算法C语言实现)

;i++) printf("%d ",a[i]); printf("\n"); return 0; } 统一回复一下博友的问题: 首先说句抱歉的是,我这个只是上了裸代码...这个程序就是选择排序算法。...引用选择排序算法百度百科 简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;...以下为简单选择排序的存储状态,其中大括号内为无序区,大括号外为有序序列: 初始序列:{2 4 7 1 6 9 8 3 0 5}    第1趟:2与0交换:0{4 7 1 6 9 8 3 2 5}   ...冒泡排序可以查看点击,非常抱歉的是这个里面是冒泡排序的裸代码,查看代码其实可以体会到冒泡排序本质是:排序的数像水泡一样,依次比较,大的数往后移,最后大的数排在最后。

1.6K20

C语言 | 选择排序

例83:C语言选择排序对10个数进行排序。...解题思路:选择排序是指第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾,,直到全部待排序的数据元素的个数为零...C语言代码演示: #include//头文件  int main()//主函数  {   int i,j,temp,array[11];//定义变量    printf("请输入10...:\n");//提示语句    for(i=1;i<=10;i++)//输出排序后的数    {     printf("%5d",array[i]);   }    printf("\n");//换行...以上,如果你看了觉得对你有所帮助,就给小林点个赞,分享给身边的人叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C语言学习路线     C语言开发工具 更多案例可以go公众号:C语言入门到精通

1.4K22

C语言 | 选择排序

“要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万中无一” ——包租婆 这道理放在C语言学习上也一并受用。...在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。 那么如何学习呢?当然是每天都练习一道C语言题目!! ? 作者 闫小林 白天搬砖,晚上做梦。...例83:C语言选择排序对10个数进行排序。...解题思路:选择排序是指第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾,,直到全部待排序的数据元素的个数为零...C语言代码演示: #include//头文件 int main()//主函数 { int i,j,temp,array[11];//定义变量 printf("请输入10

1.3K52

动图图解C语言选择排序算法,含代码分析

上一篇我们分析了冒泡排序 图解C语言冒泡排序算法,含代码分析 今天来分析一下选择排序 选择排序算法的原理 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小...(大)元素,然后放到已排序序列的末尾。...代码实现 // // @author: 冲哥 // @date: 2021/12/24 14:43 // @description:实现选择排序 // 微信关注公众号【C语言中文社区】,免费领取300G...include #define N 5 //数组中元素的个数 void print_arr(int *); //将数组打印输出 void select_sort(int *); //选择排序...,请参照以下动图图解 动图图解选择排序 [select] 如果您觉得本篇文章对您有帮助,请转发给更多的人

66541

简单选择排序 C语言

简单选择排序 (Simple Selection Sort)也称作直接选择排序算法步骤: 1) 设待排序的记录存放在数组Data[1…n]中。...书上的例子: 时间复杂度 O( n 2 n^2 n2) 空间复杂度 O(1) 算法特点: 1 ) 就选择排序方法本身来讲,它是一种稳定的排序 方法,但图中例子所表现出来的现象是不稳定的,这是因为上述实现选择排序算法采用...“交换记录”的策略所造成的,改变这个策略可以写出不产生“不稳定现象”的选择排序算法。...完整代码: #include #include #include #define MAXSIZE 100 //顺序表最大容量,可以自行加大...1;i<=L.length;i++)//利用循环打印顺序表中的数据 printf("%d ",L.Data[i].key); } void SelectSort(SqList &L)//简单选择排序

68030

C语言实现选择排序

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。...首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 过程演示: ?...{3, -1, 4, 5, 8, 7, 6, 4, 2, 3};     selection_sort(arr, sizeof(arr) / sizeof(arr[0]));     printf("排序结果...由于每次都是和后面的数字比较,所以最后一位不需要循环     {         int min = i;         for (int j = i + 1; j < length; j++)  {//循环未排序好的数组...                min = j;    //记录最小值             }         }         swap(&arr[min], &arr[i]);    //将最小值交换到最前面,排序

66720

C# 算法选择排序

1、简介 选择排序排序中比较简单的一种,实现的大致思路如下:首先我们拿到一个需要排序的数组,假设该数组的第一个元素是最小的,然后将数组中剩下的元素,于最小的元素进行比较,如果中间有比第一个元素的小的...我们可以找到当前数组中最小的那个元素,在和第一个元素交换位置.第二轮循环开始,这个时候我们以及确定第一个元素是最小的,所以这轮循环第一个元素将不参与运算.这轮循环,假设第一个元素是最小的,剩下的步骤和第一轮一样. 2、C#...实现 代码如下: /// /// 选择排序 /// public class SelectctionSort {..."是" : "否"); Console.ReadKey(); } /// /// 选择排序Main方法...重点: 通过代码和图可以推算出选择排序一共会进行N次交换(哪怕数组是有序的,通过观察代码可以发现),一共会进行(N-1)+(N-2)+(N-3)+.....+2+1(标准的等差数列,计算方式自行百度)等于

43530

C语言实现选择排序

选择排序是在每一轮比较中不是每当a[i]<a[j]时候就交换,而是用一个变量k记下其中较小的元素的下标值,在a[i]与a[i+1]~a[n]全部进行比较后,只将a[i]与a[i+1] ~ a[n]中最小的值进行交换...设有n个数据存储到从a[0]~ a[n+1]的n个数组元素中,则选择排序过程分为如下n-1步骤: 第一步:在第1~n个数中找出最小者,然后与第一个数进行比较,前1个数排好序 第二步:在第2~n个数中找出最小者...,然后与第二个数进行交换,前2个数排好序 … 第n-1步:在第n-1 ~ n个数中找出最小者,然后与第n-1个数进行交换,排序结束 算法分析: n个待排序的数据分别存放在一维数组中,外层循环是次数循环...代码如下: #include void main(){ int i,j,k,n,temp,a[200]; printf("请输入需要排序的数据个数\n");...scanf("%d",&n);// 从键盘输入待排序的数据个数 for(i=0;i<n;i++){ // 利用for循环依次将输入的数据放置在数组中 scanf("%d",&a[i]);

40910
领券