基本排序算法
来源:互联网 发布:主流建站软件 编辑:程序博客网 时间:2024/06/08 15:03
【1】插入排序
将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。
要点:设立哨兵,作为临时存储和判断数组边界之用。
直接插入排序示例:
插入排序的主要思想是将元素进行移动,空出适合位置进行插入。从而达到排序效果代码如下:
#include<iostream>using namespace std;void print(int a[]){ for(int i=0;i<9;i++){cout<<a[i]<<" ";}cout<<endl;}void InsertSort(int a[],int n){int temp,i,j; //对顺序表L作直接插入排序for(i=1;i<n;i++){///按降序排列if(a[i]<a[i-1]){ temp=a[i];///临时保存值 for(j=i;j && temp<a[j-1];j--)///将前面的数据向后面移动 a[j]=a[j-1]; a[j]=temp;///在该位置赋值}print(a);}}int main(){int a[]={3,1,2,8,5,6,12,48,69};InsertSort(a,9);return 0;}
</pre><h1 style="line-height:26px"><span style="font-family:KaiTi_GB2312; font-size:24px; color:#3333ff; font-weight:normal">【2】简单选择排序算法</span></h1><p style="color:rgb(51,51,51); line-height:26px"><span style="font-family:KaiTi_GB2312; font-size:18px"><strong>在要排序的一组数中,选出最小(或者最大)的<span class="ca-5">一</span><span class="ca-5">个数与<span style="color:rgb(0,153,0)">第1个位置</span>的数交换;</span><span class="ca-5">然后在剩下的数当中再找最小(或者最大)的与<span style="color:rgb(0,153,0)">第2个位置</span>的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后</span><span class="ca-5">一</span><span class="ca-5">个数)比较为止。</span></strong></span></p><p style="color:rgb(51,51,51); line-height:26px"><span class="ca-5"><span class="ca-5"><span style="font-family:KaiTi_GB2312; font-size:18px"><strong>简单选择排序的示例:</strong></span></span></span></p><p style="font-weight:bold; color:rgb(51,51,51); line-height:26px"><span class="ca-5"><span class="ca-5"><img src="http://img.blog.csdn.net/20160505185828701?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></span></span></p><p style="color:rgb(51,51,51); line-height:26px"><span class="ca-5"><span class="ca-5"><span style="font-family:KaiTi_GB2312; font-size:18px"><strong>选择排序采用双层循环,从后面找最小或者最大的数据进行交换进行排序操作</strong></span></span></span></p><p style="color:rgb(51,51,51); line-height:26px"><span class="ca-5"><span class="ca-5"><span style="font-family:KaiTi_GB2312; font-size:18px"><strong>代码如下:</strong></span></span></span></p><pre code_snippet_id="1673660" snippet_file_name="blog_20160505_2_8404603" name="code" class="cpp">#include<iostream>using namespace std;void print(int a[]){ for(int i=0;i<9;i++){cout<<a[i]<<" ";}cout<<endl;}void ChooseSort(int a[],int n){int i,j;int temp,change;for(i=0;i<n;i++){ temp=i; for(j=i+1;j<n-1;j++) if(a[temp]>a[j]) temp=j; if(temp!=i){///如果不同则进行交换 change=a[i]; a[i]=a[temp]; a[temp]=change; } print(a);///输出每一次的排列}//for}int main(){int a[]={3,1,2,8,5,6,12,48,69};ChooseSort(a,9);return 0;}
【3】冒泡排序
在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
代码如下:
#include<iostream>using namespace std;void print(int a[]){ for(int i=0;i<9;i++){cout<<a[i]<<" ";}cout<<endl;}void BubbleSort(int a[], int n){ int temp,i,j; for(i =0 ; i< n-1; ++i) { ///n个数需要n-1次循环 for(j = 0; j < n-i-1; ++j) { ///每次循环需要n-i-1次比较 if(a[j] > a[j+1]) { temp = a[j] ;a[j] = a[j+1] ; a[j+1] = temp; } //if } //forprint(a);//输出每一次排序效果 } //for } int main(){int a[]={3,1,2,8,5,6,12,48,69};BubbleSort(a,9);return 0;}
0 0
- 排序-基本排序算法
- 算法:基本排序算法
- 基本排序算法 - 基本知识点
- 排序算法基本思想
- 常用基本排序算法
- 算法记录 : 基本排序
- 基本排序算法
- 基本排序算法实现
- 基本排序算法
- 基本排序算法思想
- 基本排序算法
- 基本的排序算法
- 排序基本算法
- 基本排序算法
- 基本排序算法
- 基本排序算法总结
- 基本排序算法汇总
- 基本排序算法小结
- Android 自定义Toast
- 回溯和分支限定
- SDUTOJ 2169 Sequence 山东省第二届省赛
- nl2br.php
- Leetcode - Bulls and Cows
- 基本排序算法
- Hadoop全分布式配置
- POJ 1821 Fence(单调队列优化)
- Spring MVC 表单提交 出现400 Bad Request
- HDU 1465 不容易系列之一(错排公式)
- 动态规划算法求解硬币找零问题 (2)
- zookeeper集群搭建
- 查看Android内存情况的adb命令
- VC版本号与VS对应关系