#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. hihoCoder-1000-A+B

    题目描述:传统的A+B题 使用语言:C 代码: #include <stdio.h> int main(void){ int a,b; while((scanf("%d %d&q ...

  2. 自学Python二 Python中的屠龙刀(续)

    函数 秉承着一切皆对象的理念,函数作为对象,可以为其赋值新的对象名,也可以作为参数传递给其他函数! 正常的诸如空函数,默认参数等等我们就不提了,在这里着重提一下默认参数里面的坑和lambda函数. 当 ...

  3. C# 添加一个用户对文件或者文件夹的所有权限

    private void ModifyFilePermission(string path, string user, FileType filetype) { if (filetype == Fil ...

  4. mysql外键设置(待测试)

    外键的定义语法:[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)    REFERENCES tbl_name (index_col ...

  5. 学习KMP算法

    int kmp(char * t,int lenT,char * pat,int lenPat){ ,posT=; int[] f=partialMatch(pat,lenPat)//获取pat字符串 ...

  6. poj 3580 SuperMemo

    题目连接 http://poj.org/problem?id=3580 SuperMemo Description Your friend, Jackson is invited to a TV sh ...

  7. 九度oj 1525 子串逆序打印

    原题链接:http://ac.jobdu.com/problem.php?pid=1525 字符串简单题,注意开有结尾有空格的情况否则pe or wa #include<algorithm> ...

  8. mousewheel滚轮事件

    原生的滚轮事件:火狐与其他浏览器使用了不同的事件 /* * 滚轮事件只有firefox比较特殊,使用DOMMouseScroll; 其他浏览器使用mousewheel; * */ // firefox ...

  9. 常见css的兼容问题

    链接的虚线框问题 <!-- html --> <a class="noDashedBox" href="#"><img src=& ...

  10. JavaScript 将多个引用(样式或者脚本)放入一个文件进行引用

    1.将样式放入一个文件进行引用 @import url("../media/css/bootstrap.min.css"); @import url("../media/ ...