排序稳定性2019-11-10  09:42:11  by冲冲 1、稳定性① 定义:能保证两个相等的数,经过排序之后,其在序列的前后位置顺序不变。(A1=A2,排序前A1在A2前面,排序后A1还在A2前面)② 意义:稳定性本质是维持具有相同属性的数据的插入顺序,如果后面需要使用该插入顺序排序,则稳定排序可以避免这次排序。比如,公司想根据“能力”和“资历”
一、稳定性:     稳定:冒泡排序、插入排序、归并排序和基数排序   不稳定:选择排序、快速排序、希尔排序、堆排序 二、平均时间复杂度   O(n^2):直接插入排序,简单选择排序,冒泡排序。性能为O(n^2)的算法基本上是相邻元素进行比较,基本上都是稳定的。快速排序,归并排序,希尔排序,堆排序。   其中,快排是最好的, 其次是归并和希尔,堆排序在数据量很大时效果明显。
#import <Foundation/Foundation.h>//将函数指针的类型重定义;typedef int (*PFUN)(int, int);//1.最大值int maxValue(int x, int y);//2.最小值int min(int x, int y);//3.和int sumValue(int x, int y);//4.差int mul(int x, in
原创 2014-12-17 19:25:47
284阅读
排序1.插入排序(1).代码实现//插入排序voidInsertSort(intarray[],intsize){for(inti=1;i<size;i++){intend=i-1;intkey=array[i];//寻找插入位置while(end>=0&&array[end]>key){array[end+1]=array[end];end--;}//插入元素a
原创 2021-06-04 10:48:26
215阅读
用一层循环搞定排序package main import "fmt" func main() { slice := []int{2, 1, 9, 10, 7, 3, 6} sort(slice) fmt.Println(slice) } func sort(slice []int) { for j, i, h := len(slice)-1, 0, 0; j > 0;{ i
原创 2023-06-29 10:58:33
20阅读
#include <stdio.h>#define NUMBER 5 // 自定义学生人数void swap(int *px, int *py){ int temp = *px; *px =
原创 2022-06-01 17:05:46
26阅读
理解堆是具有以下性质的完全二叉树​每个节点大于或等于其左右子节点,此时称为大顶(根)堆​每个节点小于或等于其左右子节点,此时称为小顶(根)堆完全二叉树中的节点位置(下标或编号)之间的换算公式,假设堆根节点从1开始编号(从1开始编号方便计算,数组中0空着),以(非根)节点i为例​其父节点:i/2​左孩子:2i​右孩子:2i+1​注:把这个完全二叉树按层序遍历放入数组(0下标不用),则满足上面的关系表
原创 2021-10-19 17:28:13
316阅读
25点赞
2评论
://../codingmylife/archive/2012/10/21/2732980.html 这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经
转载 2022-01-17 17:27:57
188阅读
//冒泡排序 void BubbleSort(ElemType A[], int n) { int i, j, temp; int flag=1; for (i = 1; i <= n - 1&&flag; i++) { flag = 0;//表示在本趟冒泡是否发生交换的标志 for (j = 1; ...
转载 2021-09-03 21:12:00
244阅读
2评论
C语言冒泡排序
原创 2022-08-12 09:28:17
118阅读
1点赞
  #include <stdio.h>  void printArr(int arr[],int length){         int i;     &nbsp
原创 2012-10-22 17:16:54
488阅读
#include <stdio.h> int main() { int arr[9] = {1,5,2,7,6,3,8,9,4}; int i = 0; int j = 0; int tmp; int len=sizeof (arr)/
原创 2015-11-16 10:33:04
478阅读
1点赞
//--------------------------------------------------------------------------- #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused #
原创 2017-09-20 19:58:53
594阅读
原创 闫小林 C语言入门到精通 2020-12-01收录于话题#小林C语言实战103个“要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万中无一”——包租婆这道理放在C语言学习上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。那么如何学习呢?当然是每天都练习一道C语言题目!!作者闫小林白天搬砖,晚上做梦。我有故事,
转载 2021-03-10 14:12:26
144阅读
#include #include #define BUF_SIZE 10 void display(int array[], int maxlen) { int i; for(i = 0; i array[begin]) // 如果比较的数组元素大于基准数,则交换位置。 { swap(&array[i], &...
转载 2018-10-02 18:51:00
137阅读
(1)“冒泡法” 冒泡法大家都较熟悉。其原理为从a[0]开始,依次将其和后面的元素比较,若a[0]>a[i],则交换它们,一直比较到a[n]。同理对a[1],a[2],...a[n-1]处理,即完成排序。下面列出其代码:void bubble(int *a,int n) /*定义两个参数:数组首地址与数组大小*/ { int i,j,temp; for(i=0;ia[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } } 冒泡法原理简单,但其缺点是交换次数多,效率低。 下面介绍一种源自冒泡法但更有效率的方法“选择法”。 (2)“选择法” 选择法循环过程与冒泡
转载 2013-10-29 22:14:00
88阅读
void quick(int* arr,int start,int end) { int left = start; int right = end; int mid = arr[start]; while(left < right) { while(left < right) { if (arr[
转载 2020-08-19 20:32:00
75阅读
2评论
冒泡排序
原创 2021-11-02 16:31:49
566阅读
源程序: void main(){ int a[10]={12,38,35,22,97,65,50,88,9,75}; int i,j,t; //t是临时变量 for(j=1;j<=9;j++) //外层循环控制第几趟排序 { for(i=0;i<=10-j-1;i++) //内层循环是比较两个数的
原创 2022-06-08 17:01:26
35阅读
#include <stdio.h>int main(){ int a[10]; int i, j; i
原创 2022-06-09 01:39:11
55阅读
  • 1
  • 2
  • 3
  • 4
  • 5