??
排序算法
排序是将无需的记录序列调整为有序记录序列的一种操作。
包括:冒泡排序,选择排序,堆排序,插入排序,希儿排序,快速排序,归并排序等。
(一)
冒泡排序
基本思想:
每次进行相邻两个元素的比较,如果为逆序时即进行交换,直到没有反序的数据元素为止。
排序过程:
设想被排序的...
分类:
编程语言 时间:
2015-04-03 17:32:47
阅读次数:
231
当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短; 1.插入排序—直接插入排序(Straight Insertion Sort)基本思想:将一个记录...
分类:
编程语言 时间:
2015-04-01 19:25:51
阅读次数:
169
一、冒泡排序 时间复杂度:O(N²) 原理:从数组的第一个位置开始两两比较array[index]和array[index+1],如果array[index]大于array[index+1]则交换array[index]和array[index+1]的位置,直到数组结束。 void Bubble(i...
分类:
编程语言 时间:
2015-03-31 00:24:38
阅读次数:
148
1. 冒泡排序 算法思想:两两比较相邻的记录的关键字,如果反序则交换顺序,直到没有反序记录为止! 算法实现:void BubleSort(int *a, int size){ int i, j; int flag = 1;//weather need sorted for(i ...
分类:
编程语言 时间:
2015-03-17 12:21:54
阅读次数:
149
目录简介交换排序冒泡排序快速排序插入排序直接插入排序希尔排序选择排序简单选择排序堆排序归并排序基数排序总结简介排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序。若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参...
分类:
编程语言 时间:
2015-03-16 08:38:00
阅读次数:
264
所有排序算法总结:冒泡排序,快速排序,插入排序,归并排序,堆排序,shell排序,选择排序1. 冒泡排序 很简单的排序,外层循环是n-1趟,内层循环是n-1次两两比较。主要思路:从底部往上冒泡,通过无序区中相邻记录关键字间的比较和位置的交换,使关键字最小的记录如气泡一般逐渐往上“漂浮”直至“水面”....
分类:
编程语言 时间:
2015-03-13 18:22:50
阅读次数:
167
#include
using namespace std;
void Insert(int r[],int n){
for(int i=2;i<=n;i++){
if(r[i]<r[i-1]){
r[0]=r[i];
int j=i-1;
for(;r[0]<r[j];j--){
r[j+1]=r[j];
}
r[j+1]=r[0];//游标指向j
...
分类:
编程语言 时间:
2015-03-12 11:33:03
阅读次数:
254
递归法
#include
using namespace std;
void Merge(int r[],int r1[],int b,int m,int e){
int i=b;
int j=m+1;
int k=b;
while((i<=m)&&(j<=e)){
if(r[i]<=r[j]){
r1[k]=r[i];
i++;
k++;}
else{
r1[k...
分类:
编程语言 时间:
2015-03-12 11:32:51
阅读次数:
179
求数组中的逆序对
#include
using namespace std;
int MergeArray(int r[],int s,int m,int e,int temp[]){
int i=m,j=e,count=0,k=0;
while(i>=s&&j>=m+1){
if (r[i]>r[j]){
temp[k]=r[i];
k++;
count=count+...
分类:
编程语言 时间:
2015-03-12 11:32:13
阅读次数:
172
一、基本概念 所谓排序,就是将原本无序的一个序列重新排列成为有序的序列。 所谓排序算法的稳定性,就是指待排序的序列中有两个或者两个以上的相同的项,在排序前和排序后的相对位置有没有发生变化。如果没有发生变化,那么就是稳定的,反之,则不稳定。
分类:
编程语言 时间:
2015-03-05 01:34:30
阅读次数:
146