手写快排模版

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int a[100];
 4 int n;
 5 inline int read()
 6 {
 7     int x=0,f=1;
 8     char ch=getchar();
 9     while(ch<‘0‘||ch>‘9‘)
10     {
11         if(ch==‘-‘)
12             f=-1;
13         ch=getchar();
14     }
15     while(ch>=‘0‘&&ch<=‘9‘)
16     {
17         x=x*10+ch-‘0‘;
18         ch=getchar();
19     }
20     return x*f;
21 }
22 inline void write(int x)
23 {
24     if(x<0)
25     {
26         putchar(‘-‘);
27         x=-x;
28     }
29     if(x>9)
30     {
31         write(x/10);
32     }
33     putchar(x%10+‘0‘);
34 }
35 inline void quicksort(int left,int right)
36 {
37     int i,j,t,temp;
38     if(left>right)
39         return;
40     temp=a[left];
41     i=left;
42     j=right;
43     while(i!=j)
44     {
45         while(a[j]>=temp&&i<j)
46             j--;
47         while(a[i]<=temp&&i<j)
48             i++;
49         if(i<j)
50             swap(a[i],a[j]);
51     }
52     a[left]=a[i];
53     a[i]=temp;
54     quicksort(left,i-1);
55     quicksort(i+1,right);
56 }
57 int main()
58 {
59     cin>>n;
60     for(int i=1;i<=n;i++)
61         cin>>a[i];
62     quicksort(1,n);
63     for(int i=1;i<=n;i++)
64         cout<<a[i]<<" ";
65     return 0;
66 }
时间: 2024-11-05 05:09:47

手写快排模版的相关文章

自己写快排模板与C++快排库函数使用

自己写快排模板与C++快排库函数使用 1.自己写快排模板 我理解的快速排序思想原理是: 假定待排序数组的范围是0~N 1.在一个数组中找一个数作为中心点M(可以使用固定位置的数,也可以随机的采用数组中的数) 2.把数组中所有的数与这个中心点进行比较.小于中心点的数移到中心点左边,大于中心点的数移到中心点右边. 3.经过上面两步可以得到由M点所划分的两个数组(一个数组都小于等于M,一个都大于等于M),再对这两个数组递归的进行1.2所示步骤,知道划分的数组大小为0: 快排思想实现的主要的重点难点在于

觉得python写快排真的简单易懂

记录下自己学习python的学习路 快速排序: def mySort(l): if len(l)<2:#如果列表中只有一个元素就会返回 return l num=l[0]#拿一个元素作为参考元素 startl=[x for x in l[1:] if x <= num ]#使用列表推导式把小于等于参考元素的放入新的列表 endl=[x for x in l[1:] if x > num ]#使用列表推导式把大于参考元素的放入新的列表 #使用递归的方式将排序好的元素拼接为新的列表返回 re

2019秋招复习笔试--手写代码

1. 手写一个单例模式 2. 手写一个生产者消费者模式 3. 手写一个LRU算法的实现: 4. 手写快排 5. 手写堆排 6. 手写树的遍历(先序.中序.后序.层序) 7. 手写一个二分查找 #. 剑指OFFER #. LeetCode 原文地址:https://www.cnblogs.com/greatLong/p/11505100.html

今天天气很好,写个快排练练手

最近有些懒,好久没写代码了,现在写个快排练练手吧. public class QucikSort { //此处交换两个数 public static void swap(int a[],int low,int high) { int temp=a[low]; a[low]=a[high]; a[high]=temp; } //分区,分成两部分 public static int partion(int a[],int low,int high) { swap(a,low,high); int c

用js写了个快排,还有优化的余地

看了一天别人的代码,换换思路,写个快排. 直接上代码,低估了,原理一直记得,本以为10分钟能搞定,但出现很多小bug,整了20多分钟. /** * Created by cdpmac on 15/5/15. */ var arr = [5, 3, 7, 4, 1, 9, 8, 6, 2]; quickSort(arr,0,arr.length-1); console.log(arr); function quickSort(arr,left,right){ if( left>=right){ r

快速排序--QuickSort,看完五分彩开奖网平台搭建自己就能写出来的快排思路推演

快速五分彩开奖网平台搭建论坛:haozbbs.com Q1446595067排序(QuickSort)介绍首先发明者竟然敢给自己发明的算法叫做QuickSort,这个名字闪不闪亮?好比别的武功叫做六脉神剑.降龙十八掌,我这个叫做"天下无敌神功".别的排序算法都是按照特点来起的,你这个不是应该叫分块递归排序法吗?或者和希尔一样,叫做霍尔排序也可以啊,这么高调是要干啥啊?我给了他一次机会,特意去查了一下,这个名字并不是江湖朋友抬爱给的,就是发明者自己起的,社会社会...不过看完这篇博客,理

用python写个快排

快排过程比较简单就直接上代码了: 1 #!/usr/bin/python3 2 3 def quik_sort(L, left, right): 4 if left <= right: 5 key = L[left] 6 i = left 7 j = right 8 while i < j: 9 while i < j and key <= L[j]: 10 j -= 1 11 L[i] = L[j] 12 while i < j and L[i] <= key: 13

关于快排的递归实现

*/--> 关于快排的递归实现 Table of Contents 1 引子 2 源码 1 引子 自己以前写过一篇关于快速排序的blog,但是没采用递归,而且当时的blog是完全手写的.但是现在都用Emacs工作,所以就分开了. 虽然以前写过快排,但是过了一段时间再来写,虽然有递归的引子,但还是对递归的初始入口不会,始终不得其解,还是在参看了以前的代码才写了出来. 2 源码 快速排序的递归实现: 1: #include <stdio.h> 2: #include <stdlib.h

数学之美番外篇:快排为什么那样快

目录 0. 前言 1. 猜数字 2. 称球 3. 排序 3.1 为什么堆排比快排慢 3.2 为什么快排其实也不是那么快 3.3 基排又为什么那么快呢 4. 信息论!信息论? 5. 小结 0. 前言 知道这个理论是在TopLanguage上的一次讨论,先是g9转了David MacKay的一篇文章,然后引发了牛人们的一场关于信息论的讨论.Anyway,正如g9很久以前在Blog里面所说的: 有时无知是福.俺看到一点新鲜的科普也能觉得造化神奇.刚才读Gerald Jay Sussman(SICP作者