zoukankan      html  css  js  c++  java
  • AcWing算法基础1.1

    排序

    快速排序(快排)

    写题的时候用的不多基本都是直接sort ( ),面试可能要手撸快排,上模板

     1 void quick_sort(int q[], int l, int r)
     2 {
     3     if(l >= r)  return;
     4     int i = l - 1, j = r + 1, x = q[l];
     5     while(i < j)
     6     {
     7         do i ++ ; while(q[i] < x);
     8         do j -- ; while(q[j] > x);
     9         if(i < j)  swap(q[i],q[j]);
    10         else  break;
    11     }
    12     quick_sort(q, l, j), quick_sort(q, j + 1, r);
    13 }

    模板题

    给定你一个长度为n的整数数列。

    请你使用快速排序对这个数列按照从小到大进行排序。

    并将排好序的数列按顺序输出。

    输入格式

    输入共两行,第一行包含整数 n。

    第二行包含 n 个整数(所有整数均在1~109109范围内),表示整个数列。

    输出格式

    输出共一行,包含 n 个整数,表示排好序的数列。

    数据范围

    1n1000001≤n≤100000

    输入样例:

    5
    3 1 2 4 5

    输出样例: 

    1 2 3 4 5
    #include <iostream>
    #include <cstdio> 
    
    using namespace std;
    void quick_sort(int p[], int l, int r);
    const int mx = 1e5 + 10;
    int n, a[mx];
    
    int main()
    {
        cin >> n;
        for(int i = 0; i < n; i ++)
            scanf("%d",&a[i]);
            
        int l = 0, r = n - 1;
        quick_sort(a, l, r);
        for(int i = 0; i < n; i ++)
          printf("%d ",a[i]);
        return 0;
    }
    
    void quick_sort(int p[], int l, int r)
    {
        if(l >= r)  return;
        int i = l - 1, j = r + 1, x = p[l];
        while(i < j)
        {
            do i ++;  while(p[i] < x);
            do j --;  while(p[j] > x);
            if(i < j)  swap(p[i],p[j]);
            else  break;
        }
        quick_sort(p, l, j), quick_sort(p, j + 1, r);
    }
  • 相关阅读:
    语法专题:错误处理机制
    语法专题:数据类型的转换
    运算符:其他运算符,运算顺序
    运算符:二进制位运算符
    运算符:布尔运算符
    运算符:比较运算符
    day09 继承、super、this、抽象类
    day08 String类、Static关键字、Arrays类、Math类
    day06 Scanner类、Random类、匿名对象、ArrayList类
    day05 encapsulation
  • 原文地址:https://www.cnblogs.com/chuyds/p/10927907.html
Copyright © 2011-2022 走看看