第一轮,逐个比较 (R[1], R[2]), (R[2], R[3]), (R[3], R[4]), ……. (R[N-1], R[N]),最大的元素被移动到 R[n] 上。
第二轮,逐个比较 (R[1], R[2]), (R[2], R[3]), (R[3], R[4]), ……. (R[N-2], R[N-1]),次大的元素被移动到 R[n-1] 上。
。。。。。。
以此类推,直到整个数组从小颤仿枣到大排序。
具体的代码实现如下所示:
#include <stdio.h>
int main(){
int nums[10] = {4, 5, 2, 10, 7, 1, 8, 3, 6, 9}
int i, j, temp
//冒泡排序算法:进行 n-1 轮比较
for(i=0i<10-1i++){
//每一轮比较前 n-1-i 个,也就是说,已经排序好的茄拆最后 i 个不用比大庆较
for(j=0j<10-1-ij++){
if(nums[j] >nums[j+1]){
temp = nums[j]
nums[j] = nums[j+1]
nums[j+1] = temp
}
}
}
//输出排序后的数组
for(i=0i<10i++)
{
printf("%d ", nums[i])
}
printf("\n")
return 0
}
冒泡排序是排序算法的一种,思路清晰,代码简洁,常被用在大学生计算机课程中。“冒泡”这个名字的由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。这里以从小到大排序为例进行讲解。基本思想及举例说明
冒泡排序的基本思想就是不断比较相邻的两个数,让较大的谈厅返元素不断地往后移。经过一轮比较就,选出最大的数;经过第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++) 。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)