数据结构中的排序如何用一个主函数串起来

img


数据结构中的排序然后如何用一个主函数串起来,并且能够实现成功

img


我用了,还是报错,运行不成功,为什么呢?

代码看不到,不好说呀
一般来说类似

#include <stdio.h>
void sort(int arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (arr[j] > arr[j+1]) {
                int t = arr[j]; arr[j] = arr[j+1]; arr[j+1]=t;
            }
        }
    }
}
int main()
{
    int arr[10] = {2,4,1,7,3,10,9,8,5,6};
    sort(arr, 10);
    for (int i = 0; i < 10; i++)
        printf("%d ", arr[i]);
    return 0;
}

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7709612
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:结构体指针在函数中改变,但是函数运行完毕后回到主函数发现他没变(改变的是形参结构体指针)
  • 除此之外, 这篇博客: 【数据结构】双向链表的图书管理系统中的 主函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • //主函数
    int main()
    {
    	
    	DuLinkList L;
    	cout<<"**********欢迎使用图书管理系统目录**********"<<endl;
    	cout<<"目录:"<<endl;
    	cout<<"1:建立"<<endl;
    	cout<<"2:插入"<<endl;
    	cout<<"3:删除"<<endl;
    	cout<<"4:输出"<<endl;
    	cout<<"5:查找"<<endl;
    	cout<<"6:统计图书数量"<<endl;
    	cout<<"0:退出"<<endl;
    	cout<<"********************************************"<<endl;
    	cout<<endl;
    	
    	int choice;
    	cin>>choice;
    	switch(choice)
    	{
    		case 1:
    			{
    				InitDuList_L(L);
    				cout<<"建立成功!"<<endl;
    				break;
    			}
    		default:
    			{
    				cout<<"还未建立双向链表!"<<endl;
    				return 0;
    				break; 
    			}
    	}
    	while(1)
    	{
    		if(stop==1) 
    		{
    			return 0;
    		}
    		menu(L);
    	}
    	
    	return 0;
     } 
    
  • 您还可以看一下 张飞老师的硬件开发与电路设计速成入门到精通视频教程第一部课程中的 分析整流桥电路,电容计算小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以给您提供以下思路:

    1. 对于莱文斯坦距离和最长公共子串长度,可以使用动态规划算法快速计算。
    2. 对于莱文斯坦距离,定义dp[i][j]为将第一个字符串s1的前i个字符转化为第二个字符串s2的前j个字符所需要的最少编辑操作次数,那么dp[i][j]可以从dp[i-1][j-1]、dp[i-1][j]、dp[i][j-1]三个状态转移过来,分别表示替换、删除、增加操作。具体地,如果s1[i-1] == s2[j-1],那么dp[i][j] = dp[i-1][j-1],否则dp[i][j] = min(dp[i-1][j-1], dp[i-1][j], dp[i][j-1]) + 1。
    3. 对于最长公共子串长度,定义dp[i][j]为以s1[i-1]和s2[j-1]为结尾的最长公共子串长度。如果s1[i-1] == s2[j-1],那么dp[i][j] = dp[i-1][j-1] + 1;否则dp[i][j] = 0。最终的答案就是dp数组中的最大值。
    4. 在主函数中,可以定义函数计算两个字符串之间的编辑距离,或者最长公共子串长度,并输出结果。

    下面给出Python的实现代码,以计算莱文斯坦距离为例:

    def levenshtein_distance(s1: str, s2: str) -> int: n1 = len(s1) n2 = len(s2) if n1 == 0 or n2 == 0: return n1 + n2 dp = [[0] * (n2 + 1) for _ in range(n1 + 1)] for i in range(n1 + 1): dp[i][0] = i for j in range(n2 + 1): dp[0][j] = j for i in range(1, n1 + 1): for j in range(1, n2 + 1): if s1[i - 1] == s2[j - 1]: dp[i][j] = dp[i - 1][j - 1] else: dp[i][j] = min(dp[i - 1][j - 1], dp[i - 1][j], dp[i][j - 1]) + 1 return dp[n1][n2]

    测试

    assert levenshtein_distance('mitcmu', 'mtacnu') == 3

    如果需要计算最长公共子串长度,只需要稍作修改即可。