-
2018-12-02 00:55:22
除了,之前的冒泡法外,又讲了一个新的方法——选择法。
算法要求:使用选择法排序法对n(这里为10个数)个整数进行升序排序。
所谓选择无疑是选出一个数然后不停的比较最后选出最大最小的数:上代码QWQ
#include <stdio.h>
int main ()
{
int a[10],i,j,k,t,n=10;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++)//外循环控制趟数(n-1)
{
k=i;//假设当前第一个数为最值,存在k中
for(j=i+1;j<n;j++)//内循环从第二个数开始
{
if(a[k]>a[j])//如果k的值大于正在比较的值
k=j;//存入k中
}
if(k!=i)//如果较小的值不是一开存的值,开始互换
{
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
for(i=0;i<n;i++)//输出
printf("%d ",a[i]);
printf("\n");
return 0;
}这就是选择法了,与冒泡法比较,效率有所提高(em.....觉得都差不多),仍要进行较多的排序,比较耗时。
——热心市民蔡先生
更多相关内容 -
c语言数组选择法排序
2012-03-07 23:08:30使用c语言写的数组选择法排序的程序代码,有详细注释。 -
C语言:数组排序(选择法排序)
2021-11-08 08:21:28选择法排序指每次选择所要排序的数组中的最小(最大)的数组元素,将这个数组元素的值与后面没有进行排序的数组元素的值互换。 下面以9、6、15、4、2为例,进行选择排序 元素[0] 元素[1] 元素[2] 元素...选择法排序指每次选择所要排序的数组中的最小(最大)的数组元素,将这个数组元素的值与后面没有进行排序的数组元素的值互换。
下面以9、6、15、4、2为例,进行选择排序
元素[0] 元素[1] 元素[2] 元素[3] 元素[4] 起始值 9 6 15 4 2 第一次 2 6 15 4 9 第二次 2 4 15 6 9 第三次 2 4 6 15 9 第四次 2 4 6 9 15 结果 2 4 6 9 15 可以发现,有n个数进行选择法排序时,需要执行n(n-1)/2次比较,n-1次交换
下面通过程序来实现(10个元素从小到大排序)
#include<stdio.h> int main() { int arr[10]; /*定义一个10个元素的数组*/ int i,j,temp,pos; /*temp记录最小值,pos记录最小值位置*/ for(i=0;i<=9;i++) /*输入各个数字*/ { scanf("%d",&arr[i]); } for(i=0;i<9;i++) /*10个数排序,则只需执行9次*/ { temp=arr[i]; /*记录此时的值为最小值*/ pos=i; /*记录该元素的位置*/ for(j=i+1;j<10;j++) /*与后面的元素逐个比较*/ { if(arr[j]<temp) /*若temp中的数大于下一位,则temp赋值为下一位*/ { temp=arr[j]; pos=j; } } arr[pos]=arr[i]; /*交换两个元素的值*/ arr[i]=temp; } for(i=0;i<=9;i++) /*输出排序后的数组*/ { printf("%d ",arr[i]); } return 0; }
由此可以得出选择法排序简单容易实现,适用于数量较少的排序
-
C语言 数组——选择排序法
2020-04-06 17:18:47#include <stdio.h> int main() { int a[10],i,j,t; for(i=0;i<=9;i++){ scanf("%d",&a[i]); } for(i=0;i<=8;i++){ for(j=i+1;j<=9;j++){ if(a[i]>a[j]){ ... ...#include <stdio.h> int main() { int a[10],i,j,t; for(i=0;i<10;i++){ scanf("%d",&a[i]); } for(i=0;i<9;i++){ for(j=i+1;j<10;j++){ if(a[i]>a[j]){ t=a[i]; a[i]=a[j]; a[j]=t; } } } for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); return 0; }
-
数组的选择排序
2020-12-02 21:04:451、算法思想:选择排序,从头至尾扫描序列,找出最小的一个元素,和第一个元素交换,接着从剩下的元素中继续这种选择和交换方式,最终得到一个有序序列。 2、算法过程 举个栗子(第一趟的排序过程) 原始序列:49...1、算法思想:选择排序,从头至尾扫描序列,找出最小的一个元素,和第一个元素交换,接着从剩下的元素中继续这种选择和交换方式,最终得到一个有序序列。
2、算法过程
举个栗子(第一趟的排序过程)
原始序列:49、38、65、97、76、13、27、49
1)在进行选择排序过程中分成有序和无序两个部分,开始都是无序序列
结果:49、38、65、97、76、13、27、49
2)从无序序列中取出最小的元素13,将13同无序序列第一个元素交换,此时产生仅含一个元素的有序序列,无序序列减一
结果:{13、} {38、65、97、76、49、27、49}
3)从无序序列中取出最小的元素27,将27同无序序列第一个元素交换,此时产生仅两个元素的有序序列,无序序列减一
结果:{13、27、} {65、97、76、49、38、49}
4)从无序序列中取出最小的元素38,将38同无序序列第一个元素交换,此时产生含三个元素的有序序列,无序序列减一
结果:{13、27、38、} {97、76、49、65、49}
5)从无序序列中取出最小的元素49,将49同无序序列第一个元素交换,此时产生含四个个元素的有序序列,无序序列减一
结果:{13、27、38、49、} {76、97、65、49}
6)从无序序列中取出最小的元素49,将49同无序序列第一个元素交换,此时产生含五个元素的有序序列,无序序列减一
结果:{13、27、38、49、49、} {97、65、76}
7)从无序序列中取出最小的元素65,将65同无序序列第一个元素交换,此时产生含六个元素的有序序列,无序序列减一
结果:{13、27、38、49、49、65} {97、76}
8)从无序序列中取出最小的元素76,将76同无序序列第一个元素交换,此时产生含七个元素的有序序列,无序序列减一
结果:{13、27、38、49、49、65、76、} {97}
9)最后一个元素肯定是最大元素,无序排序直接生产一个有序的序列
结果:{13、27、38、49、49、65、76、97}
public class SelectArray { public static void select(int[] arr ){ //k是最小的元素的下标 int k=0; int temp=0; //整体要循环多少趟 for (int i=0;i<arr.length-1;i++){ k=i; //从未完成排序的i开始 for (int j = i; j < arr.length; j++) { if(arr[j]<arr[k]){ k=j; } } temp=arr[i]; arr[i]=arr[k]; arr[k]=temp; } } }
-
C语言--用选择法实现对一维数组的排序(对函数内容一的深化理解)
2022-03-30 17:55:12在排序之前,首先我们应理解数组的作为函数实参与形参的传递规则以及其相关特性,在我们用数组元素作为实参时,向形参变量传递的是数组元素的值;用数组名作函数实参时,传递的是数组首元素的地址;此时用数组名作... -
使用选择排序法对以为数组进行排序
2017-12-20 13:53:37使用选择排序法对以为数组进行排序,程序完全可以运行,方便大家学习 -
21天学会Java之(Java SE第八篇):数组、冒泡排序法、二分法查找
2021-01-20 02:10:54数组 数组的定义 数组是相同类型数据的有序集合,数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们。数组的三个基本... -
C++实现数组冒泡排序
2021-01-31 23:39:53C++实现冒泡排序 -
数组的排序方法(选择排序法、冒泡排序法)
2020-09-20 21:36:16选择排序法就是用一个值和依次和后面所有的值进行比较,如果是大于后面的值,那么久交换位置(升序),如果是小于后面对值就交换位置(降序)。 let arr = [1, 3, 5, 7, 9,2,4,6,8]; (升序) 遍历数组 for (let i=0;... -
使用冒泡法排序法对一维数组进行排序
2017-12-20 13:55:00使用冒泡法排序法对一维数组进行排序,程序完全可以运行,方便大家学习 -
使用快速排序法对一维数组进行排序
2017-12-20 13:56:23使用快速排序法对一维数组进行排序,程序完全可以运行,方便大家学习 -
php选择排序法实现数组排序实例分析
2021-01-20 00:41:42选择排序法的基本思路:直接用案例来说明吧,比如有一个数组$arr = array(2,6,3,9),从大到小排序。 第一次大循环:它首先假设$arr[0]为最大值,然后分别跟$arr[1]~$arr[3]进行比较,如果比较它大,则进行交换,过程... -
C语言一维数组选择排序
2018-11-04 19:15:57# include int main ...说明:先取数组最低下标,让最低下标的数与后面的数比较,选出最小的数,让最小的数的下标与最低下标交换,然后让最低下标+1,再重复选择。最后输出交换完毕的数组。 -
二维数组如何进行冒泡排序
2020-07-18 01:04:17思路以及注意点、说明我都加在了代码旁边的注释里,好好悟悟! -
C语言 数组排序 – 选择法排序 - C语言零基础入门教程
2021-08-17 10:15:20数组选择法排序原理 三.数组选择法排序实战 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.简介 经过前面的学习,我们已经学会了数组遍历,在开发中,我们经常回碰到对数... -
java数组排序冒泡排序源代码
2018-10-29 21:59:49java冒泡排序 代码为排序源代码 简洁明了 无其他 -
c++数组冒泡法排序
2010-11-07 09:15:10冒泡法排序 选择排序 c++编程 for (i=1;i;i++) for (j=1; j; j++) if (a[j][j+1] ) {t=a[j]; a[j]=a[j+1]; a[j+1]=t;} for(i=1;i;i++) { flag=1; for (j=1; j; j++) if (a[j][j+1] ) {t=a[j]; a[j]... -
数组排序之冒泡排序
2021-05-31 17:18:19数组排序之冒泡排序一、冒泡原理二、冒泡代码 冒泡排序是一个比较经典和简单的排序算法,今天我们从算法本身,时间复杂度以及稳定性方面来看看冒泡排序,这些方面也是研究其他排序算法的一般思路。 一、冒泡原理 ... -
数组排序之冒泡法和选择法
2018-12-16 22:50:33这一次,我们来聊聊冒泡排序法和简单选择排序法。 一.冒泡排序: 1.算法: 1>.基本思想:在排序过程中对元素进行两两比较,越小的元素会经由交换慢慢‘’浮‘’到数组的最前面(低下标处),像气泡一样慢慢浮... -
二维数组冒泡法排序--C语言
2020-02-14 21:06:53二维数组冒泡法排序 // 二维冒泡排序.cpp : Defines the entry point for the console application. // #include "stdafx.h" int main(int argc, char* argv[]) { //找出二维数组中最大的元素 int nums[5]... -
数组冒泡排序法
2022-03-23 20:20:40它重复的走访 过要 排序的元素列,依次比较相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把它们交换过来。走访元素的工作是重复进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。 ... -
C语言:数组排序(冒泡法排序)
2021-11-08 19:51:45冒泡法排序指的是在排序时,每次比较数组中相邻的两个数组元素的值,将较大的数(从小到大排列)排在较小的数后面。 以数字9、6、15、4、2为例 元素[0] 元素[1] 元素[2] 元素[3] 元素[4] 起始值 ... -
Java简单数组排序(冒泡法)
2020-09-03 06:27:25主要介绍了Java简单数组排序,实例分析了基于冒泡法实现数组排序的相关技巧,简单实用,具有一定参考借鉴价值,需要的朋友可以参考下 -
C语言 数组 冒泡排序法
2021-07-15 13:01:54C语言 数组 冒泡排序法 以从小到大排序为例,冒泡排序的整体思想是这样的: 从数组头部开始,不断比较相邻的两个元素的大小,让较大的元素逐渐往后移动(交换两个元素的值),直到数组的末尾。经过第一轮的比较,就... -
数组 选择排序 c语言
2019-01-23 12:10:54//如果发现比a[k]小的数a[j],先把a[j]的数组下标存在k } if(k!=i)//如果最小数下标有更改,那么将最小数a[k]和a[i]交换 { t=a[i]; a[i]=a[k]; a[k]=t; } } for(i=0;i;i++) printf("%d ",a[i]); } ... -
JavaScript数组-冒泡排序
2021-05-26 00:08:29数组的冒泡排序算法也算一道经典面试题了,这里也给大家分享一下JavaScript中关于数组的冒泡排序的写法和思路: 先给大家上代码: <script> // 冒泡排序:将数组中的数字按照从大到小或从小到大的顺序排序... -
java数组冒泡法排序
2012-09-24 10:23:21java冒泡法排序,是java学习中比较基础的一个程序,希望对大家有所帮助! -
php插入排序法实现数组排序实例
2020-10-24 16:41:54主要介绍了php插入排序法实现数组排序,实例分析了插入排序法的原理与具体的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下