简单排序:插入,选择和冒泡


void selectsort(int a[],int n)  // 选择排序的思路就是每次找到当前序列中最小的元素,然后交换
{ // 就是选择最小的,然后交换
int i,j,flag;
for(i = 0;i<n;i++)
{
flag = i; //当前元素
for(j = i+1;j<n;j++)
{
if(a[j]<a[flag])
flag = j; //在剩下未排序的数组中找到最小元素的下标
}
int temp = a[i]; //交换当前元素和最小元素。
a[i] = a[flag];
a[flag] = temp;
}
}
void insertsort(int a[],int n) //插入排序的思路是,每次对当前元素进行插入,插入到合适的位置,带来的代价就是每次都要多次移动元素
{
int i,j,t;
for(i = 1;i<n;i++)
{
t = a[i];
for(j = i-1; j>=0 &&t<a[j];j--)
a[j+1] = a[j]; // 比较直到找到比当前元素更小的位置,移动后面的元素
a[j+1] = t; // 插入
}
}

void bubblesort(int a[],int n)
{
int i,j;
for(i = 0;i<n;i++) //冒泡排序是每一次冒泡,就比较相邻两元素的大小,并交换
{
for(j = n-1;j>i;j--)
{
if(a[j-1]>a[j])
{
int temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
}
}

简单排序:插入,选择和冒泡

时间: 2024-07-30 07:06:12

简单排序:插入,选择和冒泡的相关文章

图解排序算法(一)之3种简单排序(选择、冒泡、直接插入)

先定义个交换数组元素的函数,供排序时调用 /** * 交换数组元素 * @param arr * @param a * @param b */ public static void swap(int []arr,int a,int b){ arr[a] = arr[a]+arr[b]; arr[b] = arr[a]-arr[b]; arr[a] = arr[a]-arr[b]; } 简单选择排序(O(n^2)) 简单选择排序是最简单直观的一种算法. 基本思想:每一趟从待排序的数据元素中选择最小

链表的排序 (选择和冒泡)

无聊写了个单链表排序,不是很难.但是插入写起来很麻烦,都没有,本文全部是将链表中节点值互换,不改变结构,所以很容易写出来 #include<iostream> using namespace std; struct node { int n; struct node* next; }; //创建链表 void swap(int &a,int &b) { int c=a; a=b; b=c; } node* create(int a[],int len) { if(len==0)

简单排序之选择排序算法JAVA实现

选择排序原理 选择排序是一种简单排序算法.这是一个基于位置比较的算法,通常实现是左边是已经排好序的元素列表,右边是待排序的元素.当然,一开始的时候,我们认为都是未经排序的. 选择排序的精髓:与冒泡排序不同,选择排序是第N趟排序先确定最小元素的位置,然后和第N个元素交换位置.主要特点是每一趟选择一个最小值的索引作为梅一堂最后交换的位置.以一个元素个数为N的整形数组arr为例: 第一趟 以第一个元素arr[0]为基准,准备好一个中间变量temp用来记录该趟最小元素的位置,一开始,temp=0,比较a

排序算法系列1--简单排序(选择,冒泡,直接插入)

排序是数据处理中十分常见的操作,现代高级语言都有现成的n种排序算法.但了解它们的代码,对计算机思维有帮助. 简单选择排序 每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止,简单选择排序是不稳定排序. 无论数组原始排列如何,比较次数都不变:变的是交换次数.完全有序的情况下无需交换移动元素,最差情况下(把数组倒序改成正序),交换次数最多: n-1. 时间复杂度是n2 冒泡排序 以前的博文:https://www.cnblogs.com/chentianwei/p

五 简单排序之选择排序

原理图: 源代码: public class selectionArray { public static void sort(int[] array) //选择排序 { int k=0; //用来指向最小的值 int temp = 0; //用作中间值 for(int i=0;i<array.length;i++) //趟数 { k = i; for(int j =i;j<array.length;j++) //从前往后走 { if(array[j]<array[k]) { k=j;

排序算法之简单排序(冒泡、选择、插入)

1.基本概念 内部排序和外部排序 根据排序过程中,待排序的数据是否全部被放在内存中,分为两大类: 内部排序:指的是待排序的数据存放在计算机内存中进行的排序过程: 外部排序:指的是排序中要对外存储器进行访问的排序过程. 内部排序是排序的基础,在内部排序中,根据排序过程中所依据的原则可以将它们分为5类:插入排序.交换排序.选择排序.归并排序:根据排序过程的时间复杂度来分,可以分为简单排序.先进排序.冒泡排序.简单选择排序.直接插入排序就是简单排序算法. 评价排序算法优劣的标准主要是两条:一是算法的运

排序算法(一)3种简单排序(选择,冒泡,插入)

排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的实现.但是了解这些精妙的思想对我们还是大有裨益的.本文简单温习下最基础的三类算法:选择,冒泡,插入. 先定义个交换数组元素的函数,供排序时调用 /** * 交换数组元素 * @param arr * @param a * @param b */ public static void swap(int []arr,int a,int b){ arr[a] = arr[a]

基础排序算法—冒泡,插入,选择

前言 冒泡,插入,选择这三种基础的排序算法,比较简单效率不高,工作中一般不会使用,但是当做算法来研究还是能了解一些知识的,本文以<数据结构与算法之美>为基础,详细解析一下. 正文 首先要引入几个概念 稳定性 如果待排序数组中有相同的元素,排序过后它们的相对顺序不发生变化. 比如 2,9,3,4,8,3 排序过后为2, 3 , 3, 4, 8, 9 这两个3的相对顺序不变.这样就是具有稳定性. 稳定性可以保证复杂数据结构排序时的相对有序性. 比如我们要对一笔订单先按金额排列,金额相同的再按时间排

python排序算法实现(冒泡、选择、插入)

python排序算法实现(冒泡.选择.插入) python 从小到大排序 1.冒泡排序: O(n2) s=[3,4,2,5,1,9] #count = 0 for i in range(len(s)): for j in range((i+1),len(s)): s[i],s[j]=min(s[i],s[j]),max(s[i],s[j]) #print count print s 2.选择排序: O(n2) s=[3,4,2,5,1,9] #count = 0 for i in range(l