首页 > 编程语言 >字符串排序算法+快速排序

字符串排序算法+快速排序

时间:2023-09-28 22:34:43浏览次数:45  
标签:arr right end int start 算法 字符串 排序 left

#include <stdio.h>
#include <stdlib.h>
#include <memory>
#include <vector>
#include<string>

using namespace  std;

void swap(int* a, int* b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}

void quicksort(int* arr,int start,int end)
{
    if (start >= end) return;
    int left = start;
    int right = end;
    int mid = arr[(start + end)/2];
    do 
    {
        while (arr[left] < mid) left++;
        while (arr[right] > mid) right--;
        if (left <= right)
        {
            swap(&arr[left], &arr[right]);
            left++;
            right--;
        }
    } while (left<=right);
    quicksort(arr,start, right);
    quicksort(arr,left,end);
}

void swap_str(char* a, char* b)
{
    static char temp[20];
    memcpy(temp,a,strlen(a));
    memset(a,'\0',strlen(a));
    memcpy(a, b,strlen(b));

    memset(b, '\0', strlen(b));
    memcpy(b,temp,sizeof(temp));

    memset(temp, '\0', 20);
} 

void quicksort_str(char** arr, int start, int end)
{
    if (start >= end) return;
    int left = start;
    int right = end;
    char* mid = arr[(start + end) / 2];
    do
    {
        while (strcmp((const char *)arr[left],(const char *)mid)<0)
            left++;
        while (strcmp((const char*)arr[right], (const char*)mid)>0)
            right--;
        if (left <= right)
        {
            swap_str(arr[left], arr[right]);
            left++;
            right--;
        }
    } while (left <= right);
    quicksort_str(arr, start, right);
    quicksort_str(arr, left, end);
}

int main()
{
    int loop = 0;
    int n = 10;
    int arr[] = { 12,32,34,13,64,234,7,2,5652,34 };
    char str[][20] = {"abc","my","dsaf","asfdsa","adce","adfe","wefc","z","za","abcd"};
    char*  a[10];
    for (loop = 0; loop < 10; loop++)
    {
         a[loop] = &str[loop][0];
} quicksort_str(a,0,9); for (loop=0; loop <10; loop++) { printf("%s ", a[loop]); } }

 

标签:arr,right,end,int,start,算法,字符串,排序,left
From: https://www.cnblogs.com/ysyyrps-hhl/p/17736596.html

相关文章

  • 聊聊基于Alink库的决策树模型算法实现
    示例代码及相关内容来源于《Alink权威指南(Java版)》概述决策树模型再现了人们做决策的过程,该过程由一系列的判断构成,后面的判断基于前面的判断结果,不断缩小范围,最终推出结果。如下,基于决策树模型预测天气,是最常见的示例。天气的整个预测过程,就是不断地判断推测的过程。特征......
  • js 游戏编程:(平滑跟随算法+碰撞检测算法) 贪吃蛇
    相信大家都用c语言写过贪吃蛇吧!今天让我们来试试js写的贪吃蛇!<metaname="viewport"content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no"/><style>@keyframesrot{0%{transform:rota......
  • python中实现按照固定位数拆分字符串
     001、[root@pc1test2]#lstest.py[root@pc1test2]#cattest.py##测试程序#!/usr/bin/envpython3#-*-coding:utf-8-*-importrestr1="abcdefghijklmn"print(str1)list1=re.findall(".{3}",str1)##按照每3位生成列表print(&qu......
  • 基础算法:离散化实现
    1、离散化值域大而数值稀疏的题目,通常先将需要操作的数映射到一个数组中,再做后续操作,可以大大减少时间复杂度。以AcWing.802为例,是一个典型的前缀和问题,但问题在于,若仅仅使用前缀和算法,时间复杂度会很高,因此需要先做离散化映射。题目要求如下:假定有一个无限长的数轴,数轴上每个......
  • Python 中的字符串基础与应用
    在Python中,字符串可以用单引号或双引号括起来。'hello'与"hello"是相同的。您可以使用print()函数显示字符串文字:示例:print("Hello")print('Hello')将字符串分配给变量是通过变量名后跟等号和字符串完成的:示例a="Hello"print(a)多行字符串您可以使用三个引号将多......
  • [算法分析与设计] 1. 全源最短路近似
    全源最短路(APSP)近似。有两种近似stretch\(k\).\(\delta(u,v)\leqd(u,v)\leqk\cdot\delta(u,v)\).surplus\(t\).\(\delta(u,v)\leqd(u,v)\leq\delta(u,v)+t\).其中,\(\delta(u,v)\)表示\(u,v\)间真实的最短路长度。先来考虑无权图上的surplus......
  • 机床控制更换刀具小算法
    很简单的一个小算法,大家看图分析分析下就懂了,感觉已经写的很清楚了,就不多说了。 主要的是上面的顺逆换刀判断,下面是我写的应用程序,可以参考下(可能描述的不太清楚,勉强看看吧,哈哈!!也是很简单的) 三菱SFC逆时针换刀程序:三菱SFC顺时针换刀程序:  本文章为原创作品,各路大佬......
  • 文心一言 VS 讯飞星火 VS chatgpt (93)-- 算法导论9.2 1题
    一、用go语言,证明:在RANDOMIZED-SELECT中,对长度为0的数组,不会进行递归调用。文心一言:在Go语言中,我们可以通过实现一个函数来检查数组的长度,如果长度为0,则不进行递归调用。这里是一个简单的示例:packagemainimport("fmt")funcrandomizedSelect(arr[]int,k......
  • 文心一言 VS 讯飞星火 VS chatgpt (92)-- 算法导论8.3 5题
    五、用go语言,在本节给出的第一个卡片排序算法中,为排序d位十进制数,在最坏情况下需要多少轮排序?在最坏情况下,操作员需要记录多少堆卡片?文心一言:你提到的第一个卡片排序算法可能是指的基数排序(RadixSort)。基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数......
  • 2023 ICPC 网络赛2 L Super-palindrome 字符串 border KMP dp
    传送门给出一个\(5000\)长的字符串判断有多少个连续子串是超级回文的。这里超级回文的定义是将字符串分成\(2k\)段每段按照回文对应相等。设\(f_{l,r}\)表示区间\(l,r\)是否是符合要求的。引入\(border\)的定义:最长的前缀和后缀匹配长度。容易想到我们如果暴力枚举每个区间来......