冒泡排序是排序算法的一种,思路清晰,代码简洁,常被用在大学生计算机课程中。“冒泡”这个名字的由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。这里以从小到大排序为例进行讲解。基本思想及举例说明
冒泡排序的基本思想就是不断比较相邻的两个数,让较大的元素不断地往后移。经过一轮比较就,选出最大的数;经过第2轮比较,就选出次大的数,以此类推。下面以对 3 2 4 1 进行冒泡排序说明。
1.这个算法用rand函数产生新的要排序的数据,与已有的有序数列中的数据依次比较,如果遇到比他大的数据,就从该数据开始,一直交换到末尾,达到一个插入的效果。从而形成有序的数列。
2.此外,只用rand函数并不能达到真正随机的效果。如果要实现真正随机的效果,还要配合srand函数才行。
3.具体代码如下:#include "stdio.h"#include "stdlib.h"void main(){int a[10],temp,rprintf("请输入一个种子\n")scanf("%d",&r)srand(r)for(int i=0i<9i++) 。
选择排序:
void select_sort(int a[],int n) //传入数组的要排序的元素个数
{int i,j,min,t
for(i=0i<n-1i++)
{ min=i //min:当前最小值下标
for(j=i+1j<nj++) //扫描余下的部分
if(a[min]>a[j]) //若有其它元素更小,就记录其下标
min=j
if(min!=i) //保若最小值不在排序区首位,就换到首位
{t=a[min]a[min]=a[i]a[i]=t}
}
}
冒泡排序:
void bubble_sort(int a[], int n) //传入数组的要排序的元素个数
{ int i, j, t
for (j=0j<n-1j++) //n个元素比较n-1轮
for (i= 0i<n-1-ji++) //比较相信的两个数
if(a[i]>a[i+1]) //若大小顺序不符,就交换
{t=a[i] a[i]=a[i+1]a[i+1]=t
}