C++ ------------排序算法(冒泡排序-快速排序-选择排序-插入排序-希尔排序)
来源:互联网 发布:手机怎么开通淘宝贷款 编辑:程序博客网 时间:2024/05/21 06:12
//// main.cpp// TestC++//// Created by luojuan on 16/3/28.// Copyright © 2016年 luojuan. All rights reserved.//#include <iostream>#include <algorithm>#include <vector>#include <map>using namespace std;int myArray[20];//MARK:==============================冒泡排序==============================void sort_bubble(int left,int right){ if (left > right) { return; } int count=0; do { count=0; for (int j=left; j < right; j++) { if (myArray[j] > myArray[j+1]) { count++; int change=myArray[j]; myArray[j]=myArray[j+1]; myArray[j+1]=change; } } } while ( count > 0);}//MARK:==============================快速排序==============================void sort_quick(int left,int right){ if (left > right) { return; } int i,j,temp; i=left; j=right; temp=myArray[left]; while (i != j) { while (j > i && myArray[j] >= temp) { j--; } while (i < j && myArray[i] <= temp) { i++; } if (i < j) { int change=myArray[i]; myArray[i]=myArray[j]; myArray[j]=change; } } int change=myArray[i]; myArray[i]=myArray[left]; myArray[left]=change; sort_quick(left,i-1); sort_quick(i+1,right);}//MARK:==============================选择排序==============================void sort_selection(int left,int right){ if (left > right) { return; } int temp=left; while (temp < right) { int minNum=temp; for (int i=temp; i <= right; i++) { if (myArray[i] < myArray[minNum]) { minNum=i; } } if (minNum != temp) { //替换 int change=myArray[minNum]; myArray[minNum]=myArray[temp]; myArray[temp]=change; } temp++; }}//MARK:==============================插入排序==============================void sort_insert(int left,int right){ //默认0是已经排序好的 int temp=left+1; while (temp <= right) { int num=myArray[temp]; int insert=temp-1; while (myArray[insert] > num && insert >= left) { myArray[insert+1]=myArray[insert]; insert--; } myArray[insert+1]=num; temp++; }}//MARK:==============================希尔排序==============================void shell_sort(int length){ //第一个增量 int gap=length/2; while (gap >= 1) { for (int temp=gap; temp < length; temp++) { int i=temp-gap; int num=myArray[temp]; while (i >= 0 && myArray[i] > num) { myArray[i+gap]=myArray[i]; i-=gap; } myArray[i+gap]=num; } gap=gap/2; }}int main(int argc, const char * argv[]){ for (int i=0; i < 20; i++) { if (i%2 ==0) { myArray[i]=i*10; } else { myArray[i]=-i*10; } } shell_sort(20); for (int i=0; i < 20; i++) { cout <<myArray[i] << endl; } return 0;}
0 0
- 常用的排序算法:插入排序,希尔排序,冒泡排序,选择排序,快速排序,归并排序
- 排序算法汇总(选择排序 ,直接插入排序,冒泡排序,希尔排序,快速排序...)
- 冒泡排序,选择排序,插入排序,希尔排序,合并排序,快速排序算法
- C++ ------------排序算法(冒泡排序-快速排序-选择排序-插入排序-希尔排序)
- 排序算法----冒泡排序+插入排序+选择排序+快速排序+希尔排序+堆排序+归并排序+计数排序+基数排序+桶排序(c语言)
- 排序算法: 冒泡排序, 快速排序,希尔排序,直接插入排序 ,直接选择排序,归并排序,堆排序
- 各种排序算法总结----基数排序、归并排序、插入排序、冒泡排序、选择排序、快速排序、堆排序、希尔排序
- 七种排序算法,包括:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序
- 基本的排序算法:冒泡排序、插入排序、希尔排序、选择排序、归并排序、快速排序、堆排序
- C语言排序算法集锦:选择排序,冒泡排序,插入排序,希尔排序,归并排序,堆排序,快排序
- C# 插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序
- 冒泡排序 快速排序 选择排序 堆排序 直接插入排序 希尔排序 归并排序
- 冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序java实现
- 插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序、归并排序
- 冒泡排序,插入排序,快速排序,归并排序,堆排序,选择排序,希尔排序
- 冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序六大排序大总结
- Python 排序 冒泡排序 希尔排序 快速排序 插入排序 选择排序 归并排序
- 排序算法汇总(选择排序 ,直接插入排序,冒泡排序,希尔排序,快速排序,堆排序)
- 自定义圆形imageview
- 如何打开一种语言以及如何设置开机默认语言
- Ubuntu14.04安装配置opencv2.4.11
- spring @component的作用
- [从头读历史] 第277节 诗经 桧风
- C++ ------------排序算法(冒泡排序-快速排序-选择排序-插入排序-希尔排序)
- listView不响应OnClickListenter的原因
- ajax异域请求
- android 打包吃出现Android - Expected Resource of type ID错误
- 分布式消息系统:Kafka
- 城市列表
- org.apache.commons.net.ftp.FTPConnectionClosedException异常产生原因
- 细数JDK里的设计模式
- Linux下web服务验证码不显示的问题