排序算法是什么?

作者&投稿:歧涛 (若有异议请与网页底部的电邮联系)
~

一、算法思想

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据有序。

选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。选择排序有简单选择排序、堆排序等多种算法。下面的分析、操作、程序均以简单选择排序算法为例进行讲解。


二、操作过程

初始状态:    (49)  38  65  97  76  13  27  49  32  13
第1趟:        i                    k
              13  (38)  65  97  76  49  27  49  32  13
第2趟:            i                                k
              13  13  (65)  97  76  49  27  49  32  38
第3趟:                i                k
              13  13  27  (97)  76  49  65  49  32  38    
第4趟:                    i                    k
              13  13  27  32  (76)  49  65  49  97  38    
第5趟:                        i                    k          
              13  13  27  32  38  (49)  65  49  97  76    
第6趟:                            i,k                
              13  13  27  32  38  49  (65)  49  97  76    
第7趟:                                i    k                
              13  13  27  32  38  49  49  (65)  97  76    
第8趟:                                    i,k 
              13  13  27  32  38  49  49  65  (97)  76    
第9趟:                                        i    k
              13  13  27  32  38  49  49  65  76  97


三、参考程序

#include <stdio.h>

#define MAX 10

/* 从键盘输入n个数,保存在数组中 */
void input(int arr[], int n);

/* 使用简单选择排序对数组中的元素按非递减有序排列 */
void sort(int arr[], int n);

/* 输出数组中的所有元素 */
void display(int arr[], int n);

int main()
{
int arr[MAX];

printf("请输入%d个数:
", MAX);
input(arr, MAX);

printf("排序前:
");
display(arr, MAX);

sort(arr, MAX);


printf("排序后:
");
display(arr, MAX);

return 0;
}

/* 从键盘输入n个数,保存在数组中 */
void input(int arr[], int n)
{
int i;

for(i=0; i<n; i++)
{
scanf("%d", &arr[i]);
}
}

/* 使用简单选择排序对数组中的元素按非递减有序排列 */
void sort(int arr[], int n)
{
int i, j, k;
int temp;

for(i=0; i<n-1; i++)
{
k = i;
for(j=i+1; j<n; j++)
{
if(arr[j] < arr[k])
{
k = j;
}
}

if(k != i)
{
temp = arr[k];
arr[k] =arr[i];
arr[i] = temp;
}
}
}

/* 输出数组中的所有元素 */
void display(int arr[], int n)
{
int i;
for(i=0; i<n; i++)
{
printf("%d  ", arr[i]);
}
printf("
");
}


四、运行测试

请输入10个数:
49 38 65 97 76 13 27 49 32 13
排序前:
49  38  65  97  76  13  27  49  32  13
排序后:
13  13  27  32  38  49  49  65  76  97



什么是排序算法?
排序算法需要按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作;首先要求其具有一定的稳定性,即当两个相同的元素同时出现于某个序列之中,则经过一定的排序算法之后,两者在排序前后的相对位置不发生变化。换言之,即便是两个完全相同的元素,它们在排序过程中也是各有区别的,不允许混淆不...

什么是计算机排序算法?
在插入排序、冒泡排序、快速排序、归并排序等排序算法中,占用辅助空间最多的是归并排序。对n个记录的文件进行快速排序,所需要的辅助存储空间大致为O(1og2n)。1、所有的简单排序方法(包括:直接插入、起泡和简单选择)和堆排序的空间复杂度为O(1);2、快速排序为O(logn),为栈所需的辅助空间;3、...

什么是排序法
排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。排序就是把集合中的元素按照一定的次序排序在一起。一般来说有升序排列和降序排列2种排序,在算法中有8中基本排序:(1)冒泡排序;(2)选择排序;(3)插入排序;(4)...

排序和排列是什么意思?
排序是指将一组数据按照一定的规则进行排列,使得它们按照一定的顺序来排列。排序算法的目标是将一组数据按照一定的规则进行排列,按照升序或者降序排列。排序和排列虽然有些相似之处,但是排序更注重整体的有序性,而排列则更注重每个元素的排列顺序。排序和排列有多种算法,其中最常用的排序算法是冒泡排序...

什么样的算法是稳定的?
1、快速排序:快速排序是一种基于分治思想的排序算法,通常通过选择一个枢纽元素并将数据分成两部分来实现排序。快速排序是不稳定的,因为在交换元素的过程中可能改变相等元素的相对顺序。2、堆排序:堆排序是一种基于二叉堆的排序算法,它不保证相等元素的相对顺序。在堆排序中,元素的交换可能导致相等元素...

算法有什么分类?
算法可大致分为基本算法、数据结构的算法、数论与代数算法、计算几何的算法、图论的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法,厄米变形模型,随机森林算法。算法可以宏泛的分为三类:一、有限的,确定性算法 这类算法在有限的一段时间内终止。他们可能要花很长时间...

排序是什么意思
排序是计算机的一种操作方法,其目的是将一组“无序”的记录序列调整为“有序”的记录序列,主要分为内部排序和外部排序。在计算机科学与数学中,一个排序算法(英语:Sorting algorithm)是一种能将一串数据依照特定排序方式进行排列的一种算法。最常用到的排序方式是数值顺序以及字典顺序。有效的排序算法...

稳定排序算法
稳定排序算法(stable sorting algorithm)是2018年公布的计算机科学技术名词。稳定的排序算法只有直接插入排序,冒泡排序和归并排序。其余5种都是不稳定排序。关于排序的稳定性,举个例子:一组数据排序排序前为:10,15, 5, 6(a),7 ,6(b)。排序后:5 ,6(a), 6(b).,7, 10, 15...

C语言的快速排序的算法是什么啊?
一趟快速排序的算法是: 1)设置两个变量I、J,排序开始的时候:I=0,J=N-1; 2)以第一个数组元素作为关键数据,赋值给key,即 key=A[0]; 3)从J开始向前搜索,即由后开始向前搜索(J=J-1),找到第一个小于key的值A[J],并与key交换; 4)从I开始向后搜索,即由前开始向后搜索(I...

快速排序算法的核心思想是什么?
快速排序算法的核心思想是选择一个"基准值"(pivot),将数组划分为两个子数组:左边都是小于等于基准值的元素,右边都是大于基准值的元素。然后递归地对这两个子数组进行快速排序。我们首先要选择一个基准值,由于快速排序通常选择第一个元素或最后一个元素作为基准值,这里我们选择第一个元素49作为基准...

株洲县18499778183: 排序算法 - 搜狗百科
剑仁恩利: 排序算法就是将一个数组、字符串等一系列的相同类型的变量按照一定的关系(从小到大或从大到小)排序 比如冒泡法就是将数值排序 比如这个就是从小到大排序 for(i=0;i<3;i++) for(j=i+1;j<4;j++) if(a[i]>a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; }

株洲县18499778183: 排序是什么意思 -
剑仁恩利: 排序是计算机的一种操作方法,其目的是将一组“无序”的记录序列调整为“有序”的记录序列,主要分为内部排序和外部排序.在计算机科学与数学中,一个排序算法(英语:Sorting algorithm)是一种能将一串数据依照特定排序方式进行排...

株洲县18499778183: 你了解哪些排序算法? 请说明 -
剑仁恩利: 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排...

株洲县18499778183: 排序有哪几种以及算法
剑仁恩利: 插入排序,选择排序,交换排序(冒泡),数据结构书上有详细的介绍 以下是直接插入排序,选择排序,希尔排序,冒泡排序的算法 /*直接插入排序的基本思想是:顺序地把待排序序 列中的各个记录按其关键字的大小,插入到已排 序的序列的...

株洲县18499778183: 有哪些常见排序算法呢?
剑仁恩利: 中文名排序性质计算机内经常进行的一种操作排序算法快速排序、希尔排序、堆排序等分类稳定排序等1概念描述分类2冒泡排序3选择排序优劣Java代码4插入排序优劣Java代码原理C程序原理Pascal程序Pascal程序9树型排序▪Pascal程序10面试题排序概念描述编辑将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序 以上是对这个问题的回答,希望对您有帮助.

株洲县18499778183: 常见排序算法有哪些 -
剑仁恩利: 常用的排序算法有:冒泡排序、选择排序、堆排序、SHELL排序、快速排序、归并排序、磁盘排序等等.但是每种排序算法都是各有优缺点.如果需要进一步研究各种算法的性能的话,那么就必须学习计算机算法和复杂性这门课程.

株洲县18499778183: 排序法都有哪些? -
剑仁恩利: 排序法可分为简单排序法和交替排序法.简单排序法1. 简单排序法也称序列评定法,是指管理者把本部门的所有员工从绩效最高者到绩效最低者(或从最好者到最差者)进行排序,即对一批考核对象按照一定标准排出“1、2、3、4……”的...

株洲县18499778183: 最好的排序算法是什么算法呀 -
剑仁恩利: 什么是最好?最快算是最好吗?目前就所有的内部排序法中,公认的使用广泛的,是快速排序法,平均时间为 kn*lnn ,其中n为待排序序列中记录的个数,k为某个常数.

株洲县18499778183: 什么是希尔排序法 -
剑仁恩利: 基本思想:将整个无序序列分割成若干小的子序列分别进行插入排序. 序列分割方法:将相隔某个增量h的元素构成一个子序列.在排序过程中,逐次减小这个增量,最后当h减到1时,进行一次插入排序,排序就完成.增量序列一般采用:ht=2t-...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网