冒泡排序
来源:互联网 发布:剑倚天下宠物进阶数据 编辑:程序博客网 时间:2024/06/05 10:07
C++ 实现冒泡排序
理解一:考虑每一轮的最后一个元素,根据最后的元素进行冒泡
#include "stdafx.h"#include <iostream>using namespace std;int main(){ int N; cin >> N; int *a = new int[N]; for (int i = 0; i<N; i++) { cin >> a[i]; } for (int i = 0; i<N; i++) { cout << a[i]; } cout << endl; for (int i = N - 1; i >= 0; i--) { for (int j = 0; j<i; j++) { /*i是每一轮排序的最后一个元素*/ if (a[j]>a[j + 1]) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } for (int i = 0; i<N; i++) { cout << a[i]; } delete[] a; a = NULL; return 0;}
理解二:根据轮数进行冒泡
#include <iostream>using namespace std;int main(){ int N; cin>>N; int *a = new int[N]; for(int i=0;i<N;i++) cin>>a[i]; for(int i = 0; i<N; i++){ /*i表示循环的次数,第i次即表示第i轮*/ for(int j = 0;j<N-i-1 ;j++){ /*在当前这一轮,冒泡排序将最大的元素沉到最底下,接着就不需要再考虑最后一个元素, 只需考虑剩下的N-i个元素,因为是下标,所以 N-i-1例如a[0]需要和a[1]~a[9]比较*/ if (a[j]>a[j + 1]) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } for(int i=0; i<N;i++) cout<<a[i]; free(a); a = NULL; return 0;}
理解三:
其实和上面的理解一样,只不过用一个for循环(实际还是O(n^2))实现。
#include "stdio.h"int main(){ int a[]={12,13,65,64,86,21,37,1,95,4}; int l = 10; for(int i=0;i<10;i++){ printf("%d\t",a[i]); } for(int i =0;i<l;i++){ //("hello\n"); if(a[i]>a[i+1]){ int temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } if(i==l-1){ i=-1; l--; } } for(int i=0;i<10;i++){ printf("%d\t",a[i]); } return 0;}
阅读全文
0 0
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- VS 连接MySQL,创建ADO.NET实体集,报错:StrongTypingException: 表“TableDetails”中列“IsPrimaryKey”的值为 DBNull。
- apache---svn搭建
- python学习之一 文件读取
- Linux Shell脚本编程--变量$#,$@,$*,$?,$0,$1,$2的含义解释
- CCF认证201512-2 消除类游戏
- 冒泡排序
- 希尔排序
- Jupyter Notebook教程 in Python
- 新开通的CSDN博客
- mysql中常用的锁
- 利用HandlerExceptionResolver对SpringMVC进行统一异常处理
- react-native 学习笔记
- Java基础知识_毕向东_Java基础视频教程笔记(22-25 GUI 网络编程 正则)
- cropper 图片裁剪,固定图片宽高