#include <iostream>
using namespace std; /*
快速排序
通过一趟排序,以轴点为界 分割为两部分:左部分 <= 轴点 <= 右部分
再分别对左右两部分继续递归排序
最终整个序列有序
*/
void quickSort(int arr[], int low,int high){ //if (arr==NULL||length<=0||start<=0||end>=length)
//break; int i,key,j;
if (low<high){
key=arr[low];
i=low;
j=high;
while(i<j){ //结束条件是i==j
while(i<j && arr[j]>=key) //从高到低,直到找到第一个<key的元素a[j]
j--;
if(i<j) //这里为什么要再判断一下呢??
arr[i++]=arr[j]; //继续上边,将arr[j]移到a[i]上 while(i<j && arr[i]<=key)
i++;
if(i<j)
arr[j--]=arr[i];
} arr[i]=key;
quickSort(arr,low,i-);
quickSort(arr,i+,high);
}
} void quickSort(int arr[], int low,int high){
//出错预防 //if (arr==NULL||length<=0||start<=0||end>=length)
//break;
int pivot=partition(arr,low,high); //寻找枢轴
quickSort(arr,low,pivot-);
quickSort(arr,pivot+,high);
}*/ void main(){
int a[]={,,,,,};
quickSort(a,,); for(int i=;i<;i++)
cout <<a[i];
}
#include <iostream>
using namespace std; /*冒泡排序******************************************* 一次起泡,最大值通过交换达到最右边
二次起泡,第二大的值达到倒数第二位
……
len-1次起泡 ,基于面试宝典P216 */ //改进版,若在某次起泡过程中没有交换,则说明已经全部有序了,因此这趟排序后就可以终止了
void bubble(int *a, int len){ //对数组传引用,这里形参怎么写更好??
//答:*a 和 a[]都可以
int i,j,tmp,k;
bool tag;
for(k=;k<len;k++){
tag=false; //只执行这个,表示此趟排序没有交换
for (i=;i<len-k;i++){
j=i+;
if (a[i]>a[j]){
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
tag=true; //表示此趟排序有交换
}
}
if (tag==false)
return;
}
}
/*
//基本版
void bubble(int *a, int len){//对数组传引用,这里形参怎么写更好??
//答:*a 和 a[]都可以
int i,j,tmp,k;
for(k=1;k<len;k++){
for (i=0;i<len-k;i++){
j=i+1;
if (a[i]>a[j]){
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}
}
}*/ void main(){
int a[]={,,,,,,,};
/*
int a[10];
cout<<"请输入10个整数:"<<endl;
for(int i=0;i<10;i++)
cin>>a[i];
bubble(a,10); */ bubble(a,); for(int i=;i<;i++)
cout<<a[i]<<'\t';
cout<<endl;
}

[排序] 快排 && 冒泡(自己写)的更多相关文章

  1. 数据结构--排序--快排and冒泡(python)

    听说大厂面试,限时两分钟写出来快排... 闲着没事,写了一下... def Partition(L,low,high): pivotkey = L[low] while low<high: wh ...

  2. JS算法之快排&冒泡

    1.快速排序思想: 1.1 先找数组的最中间的一个数为基准 1.2 把数组通过此基准分为小于基准的left数组和大于基准的right数组, 1.3 递归重复上面的两个步骤, 代码如下: functio ...

  3. 215 Kth Largest Element in an Array 快排

    题目:在无序的数组中找到第k大的元素,也就是若长度为n的数组从小到大排列时,下标为n-k的元素. 注意Example2:第4大的元素是4,也就是数组中出现的两个5分别是第2大和第3大的数字. 解法一: ...

  4. C语言实现单向链表及其各种排序(含快排,选择,插入,冒泡)

    #include<stdio.h> #include<malloc.h> #define LEN sizeof(struct Student) struct Student / ...

  5. wikioi 1076 排序 【这里含冒泡、选择、插入以及快排库函数的调用】

    /*=================================================================== 1076 排序 题目描述 Description 给出n和n ...

  6. C++学习(三十八)(C语言部分)之 排序(冒泡 选择 插入 快排)

    算法是解决一类问题的方法排序算法 根据元素大小关系排序 从小到大 从大到小冒泡 选择 插入 快排希尔排序 归并排序 堆排序 冒泡排序 从头到尾比较 每一轮将最大的数沉底 或者最小数字上浮 选择排序 1 ...

  7. 排序算法C语言实现——冒泡、快排、堆排对比

    对冒泡.快排.堆排这3个算法做了验证,结果分析如下: 一.结果分析 时间消耗:快排 < 堆排 < 冒泡. 空间消耗:冒泡O(1) = 堆排O(1) < 快排O(logn)~O(n) ...

  8. Java排序算法 [选择、冒泡、快排]

    选择排序: 简述:从数组的第一个元素开始,依次与其他所有的元素对比,如果比自身大或小(取决于升序或降序)交换位置. package com.sort; import java.util.Arrays; ...

  9. Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等

    本文就是介绍一些常见的排序算法.排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序.选择排序.冒泡排 ...

随机推荐

  1. 6.24 AppCan移动开发者大会,我爱我家即将闪亮登场!

    6.24 AppCan移动开发者大会进入倒计时,报名通道即将关闭! “6月24日, 2016AppCan移动开发者大会即将召开,以“平台之上,应用无限”为主题,1500位行业精英汇聚在此,重磅新品发布 ...

  2. ViewSwitcher使用范例

    一.简介 ViewSwitcher适用于两个视图带动画效果的切换.这里实现两个视图切换的功能,并附带滑屏效果. 二.截图 二.范例代码 带动画效果的切换视图一和视图二. xml <ViewSwi ...

  3. Java动态替换InetAddress中DNS的做法简单分析1

    在java.net包描述中, 简要说明了一些关键的接口. 其中负责networking identifiers的是Addresses. 这个类的具体实现类是InetAddress, 底层封装了Inet ...

  4. 面向对象原生js幻灯片代淡出效果

    面向对象原生js幻灯片代淡出效果 下面是代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" & ...

  5. 三星N8000/N8010通用刷机教程

    前面已经讲到过如何给三星n8000/n8010 Galaxy Note 10.1获取ROOT权限了.接下来就顺便告诉大家怎么给三星n8000/n8010刷机吧.其实给三星n8000/n8010刷机过程 ...

  6. extjs 表格可复制

    在GridPanel的配置项中,加入这个配置就可以了: viewConfig:{ enableTextSelection:true }

  7. [转]基于AngularJS的前端架构(上)

    模块化 怎么分模块 AngularJS自己有模块的概念,但只是为controller.direcitive.service等提供一个集合的概念,并没有文件调度的功能. 官方推荐的模块分类方法是: an ...

  8. 关于使用,NI采集卡+labview信号采集,问题交流【第二贴】

    *** 采集卡 NI PCI-6534:  max sample rate 20MHz:32位的数字输入,数字输出.  ***输入信号:    峰峰值,4.16V   最小值 -80mV    频率 ...

  9. 38.基于FPGA的FIR设计二

    利用fdatool工具生成的滤波器系数与用代码生成的系数不一致,在网上查询得知,fdatool生成的滤波器系数是有符号小数,而且是浮点型,而代码生成的滤波器系数是定点型有符号数,故不一样. 浮点型数据 ...

  10. Graceful degradation versus progressive enhancement

    http://ued.taobao.org/blog/2008/10/understanding-progressiveen-hancement-chs-translation/ http://www ...