[排序] 快排 && 冒泡(自己写)
#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;
}
[排序] 快排 && 冒泡(自己写)的更多相关文章
- 数据结构--排序--快排and冒泡(python)
听说大厂面试,限时两分钟写出来快排... 闲着没事,写了一下... def Partition(L,low,high): pivotkey = L[low] while low<high: wh ...
- JS算法之快排&冒泡
1.快速排序思想: 1.1 先找数组的最中间的一个数为基准 1.2 把数组通过此基准分为小于基准的left数组和大于基准的right数组, 1.3 递归重复上面的两个步骤, 代码如下: functio ...
- 215 Kth Largest Element in an Array 快排
题目:在无序的数组中找到第k大的元素,也就是若长度为n的数组从小到大排列时,下标为n-k的元素. 注意Example2:第4大的元素是4,也就是数组中出现的两个5分别是第2大和第3大的数字. 解法一: ...
- C语言实现单向链表及其各种排序(含快排,选择,插入,冒泡)
#include<stdio.h> #include<malloc.h> #define LEN sizeof(struct Student) struct Student / ...
- wikioi 1076 排序 【这里含冒泡、选择、插入以及快排库函数的调用】
/*=================================================================== 1076 排序 题目描述 Description 给出n和n ...
- C++学习(三十八)(C语言部分)之 排序(冒泡 选择 插入 快排)
算法是解决一类问题的方法排序算法 根据元素大小关系排序 从小到大 从大到小冒泡 选择 插入 快排希尔排序 归并排序 堆排序 冒泡排序 从头到尾比较 每一轮将最大的数沉底 或者最小数字上浮 选择排序 1 ...
- 排序算法C语言实现——冒泡、快排、堆排对比
对冒泡.快排.堆排这3个算法做了验证,结果分析如下: 一.结果分析 时间消耗:快排 < 堆排 < 冒泡. 空间消耗:冒泡O(1) = 堆排O(1) < 快排O(logn)~O(n) ...
- Java排序算法 [选择、冒泡、快排]
选择排序: 简述:从数组的第一个元素开始,依次与其他所有的元素对比,如果比自身大或小(取决于升序或降序)交换位置. package com.sort; import java.util.Arrays; ...
- Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等
本文就是介绍一些常见的排序算法.排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序.选择排序.冒泡排 ...
随机推荐
- python爬取网站数据
开学前接了一个任务,内容是从网上爬取特定属性的数据.正好之前学了python,练练手. 编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了. 问题要从文字的编码讲 ...
- scp 跨机远程拷贝
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器. 命令格式: scp [参数] [原路径] [目标路径] ...
- hdu 5443 The Water Problem
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5443 The Water Problem Description In Land waterless, ...
- iOS学习之视图控制器
一.自定义视图(label-textField组合视图) 1.自定义视图:系统标准UI之外,自己组合出的新的视图. 2.优点:iOS提供了很多UI组件,借助它们我们可以实现不同的功 ...
- [转]Reed Solomon纠删码
[转]Reed Solomon纠删码 http://peterylh.blog.163.com/blog/static/12033201371375050233/ 纠删码是存储领域常用的 ...
- AngularJs学习笔记-慕课网AngularJS实战
第1章 快速上手 放弃了IE8以及以下,不支持. 4大核心特性: 1.MVC Model: 数据模型 View:视图 Controller:业务逻辑和控制逻辑 好处:职责清晰,模块化. 2.模块化 3 ...
- xml数据读 swift
// // ViewController.swift // xml读写 // // Created by mac on 15/7/14. // Copyright (c) 2015年 fangyuha ...
- Java Day 14
多线程--线程间通信 对同一个资源进行处理,但是任务却不同 线程间通信--等待唤醒机制 1.wait(); 线程处于冻结状态,被wait线程存储在线程池中 2.notify(); 从线程池唤醒一个 ...
- Mac nginx PCRE install ngnix
1 下载:pcre-8.12.tar.gz ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre 2 sudo tar xvfz pcre-8.1 ...
- (转)Unity3d中的属性(Attributes)整理
Attributes属性属于U3D的RunTimeClass,所以加上以下的命名空间是必须的了.其它倒没什么需要注意的.本文将所有运行属性过一遍罢了. using UnityEngine; using ...