冒泡排序(C&Java实现)
2019/8/14 10:41:46
使用工具:
Java:IDEA C:CLion 文档编写:MarkdownPad2
每天一算法,希望自己的算法能有长足的进步,加油。
近几天线上的笔试更让我感受到各大互联网公司对于算法的重视。的确,现下主流的框架已经十分成熟,正常学习了就能知道如何使用,但是想要更进一步融合成自己的东西,融会贯通,还是需要深入其中去钻研,算法也算程序员的分水岭了,加油。
接下来看看今天的算法:冒泡排序
冒泡排序
冒泡排序(Bubble Sort),是一种较简单的 排序算法。
基本思想:每次比较两个相邻的元素,如果他们的顺序错误就把它们交换过来。
原理:
1. 比较相邻的元素,如果第一个比第二个大(小),就交换他们两个。
2. 对每一对相邻元素做同样的工作,从开始第一对到结尾最后一对。
3. 每一趟只能确定将一个数归位,针对所有元素重复以上步骤。
总结:如果有 n 个数进行排序,只需将 n-1 个数归位,也就是说要进行 n-1 趟操作。
算法分析
冒泡排序的算法核心部分是双重嵌套循环。
平均时间复杂度为:O(n^2)。
冒泡排序是一种稳定的排序算法。
代码实现
1、C语言实现
//
// Created by czc on 2019/8/14.
//
#include
int main(){
int book[100],i,j,t,n;
printf("请输入输入数据个数:");
scanf("%d",&n);
//循环读入n个数到数组中
for(i=1;i<=n;i++){
scanf("%d",&book[i]);
}
//冒泡排序核心部分:双重循环
for(i=1;i<=n-1;i++){
for(j=1;j<=n-i;j++){
if(book[j]>book[j+1]){
t=book[j];
book[j]=book[j+1];
book[j+1]=t;
}
}
}
for(i=1;i<=n;i++){
printf("%d",book[i]);
printf(" ");
}
return 0;
}
程序测试结果:
2、Java实现
/*
创建人:czc
创建时间:2019/8/14
用途:冒泡排序
*/
import java.util.Scanner;
import static java.lang.System.out;
public class BubbleSort {
private static Scanner scanner;
public static void main(String[] args){
int[] book=new int[100];
int i,j,t,n;
scanner=new Scanner(System.in);
out.println("请输入排序数据个数:");
n=scanner.nextInt();
for(i=1;i<=n;i++){
book[i]=scanner.nextInt();
}
//冒泡排序核心部分
for(i=1;i<=n-1;i++){
for(j=1;j<=n-i;j++){
if(book[j]>book[j+1]){
t=book[j];
book[j]=book[j+1];
book[j+1]=t;
}
}
}
for(i=1;i<=n;i++){
out.print(book[i]+" ");
}
}
}
程序测试截图: