#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. 分享O'Reilly最新C语言指针数据

    1.推荐书名 Understanding.and.Using.C.Pointers.pdf 2. 本书目录 Table of Content Chapter 1. Introduction Chapt ...

  2. WPF实现渐变淡入淡出的动画效果

    1.实现原理 1.1 利用UIElement.OpacityMask属性,用于改变对象区域的不透明度的画笔.可以使元素的特定区域透明或部分透明,从而实现比较新颖的效果. 1.2 OpacityMask ...

  3. DB2查看用户表与指定用户表表结构

    1.在dos中查看用户表 1.1查看表 DB2 LIST TABLES FOR USER 1.2 查看表结构 DB2 describe table A 2.在DB2连接工具中(这里以SQLdbx为例子 ...

  4. db2建立表空间

    --缓冲池 CREATE BUFFERPOOL EMP_BUF_POOL  IMMEDIATE  ALL DBPARTITIONNUMS  SIZE 250  NUMBLOCKPAGES 0  PAG ...

  5. android string.xml %问题

    反复检查后发现是string.xml中的 % 导致编译失败, 这是由于新的SDK采用了新版本的aapt(Android项目编译器),这个版本的aapt编译起来会比老版本更加的严格,然后在Android ...

  6. Azure SQL 数据库与新的数据库吞吐量单位DTU

    azure中新的数据库吞吐量单位 (Database Throughput Unit, DTU) 是什么,以及用户如何通过它来了解新服务级别可以提供的服务内容.DTU 对于提供预测性更强的性能体验起着 ...

  7. JVM学习总结五(番外)——VisualVM

    距离上次介绍Jconsole已经时隔两周了,这期间由于工作中要用go来做一个新项目,所以精力都用在入门go上了,不过发现go语言用起来真的挺不错的,比python感觉还好点,大家没事可以了解下.   ...

  8. APP_Store - 怎样为iOS8应用制作预览视频

    关于iOS 8应用预览视频的话题,从设计.技术规范,到录屏.编辑工具,介绍的都比较详尽:建议收藏,在接下来用的到的时候作以参考.下面进入译文. 最近一两个月里,苹果的世界里出现了很多新东西,比如屏幕更 ...

  9. win32 sdk显示一个载入的位图的方法

    注:整理自网络文档 (1)加载位图 HANDLE LoadImage(HINSTANCE 来源实体,LPCTSTR 名称,UINT 位图类型, int 加载宽度,int 加载高度,UINT 加载方式) ...

  10. sqlserver复杂排序(order by case when)

     /*表 sysid自增主键  scro分数  oper操作时间 scro分数 > 5的按照  分数 降序, 分数小于等于5的按照 操作时间 升序; >5 的排在 <=5的前面*/ ...