gpt4 book ai didi

c - 如何使用冒泡排序或选择排序对指针数组中的数组进行降序排序?

转载 作者:太空宇宙 更新时间:2023-11-04 04:24:17 25 4
gpt4 key购买 nike

我正在从事一个项目,该项目以几种不同的方式对指针数组内的数组进行排序,尽管我坚持使用一种排序方式。数组的构建方式是第一个数字指示其后的数字数量。例如,(3,0,23,1):这个数组在第一个索引之后有 3 个数字)。我想将数组从最低到最高排序但我不想更改第一个索引,这意味着数组看起来像这样 (3,0,1,23)。这些是数组和指针数组:

int arr1[] = { 3, 9, 6, 7 };
int arr2[] = { 2, 5, 5 };
int arr3[] = { 0 };
int arr4[] = { 1, 6 };
int arr5[] = { 4, 5, 6, 2, 1 };
int * pArr[SIZE] = { arr1, arr2, arr3, arr4, arr5 };

此代码用于排序功能

for (i = 0; i < SIZE; i++)
{
for (j = 1; j < pArr[i][0]+1; j++)
{
if (pArr[i][j] < pArr[i][j - 1])
{
temp = pArr[i][j];
pArr[i][j] = pArr[i][j - 1];
pArr[i][j - 1] = temp;
}
}
}

我只想使用冒泡排序或选择排序,因为我是编程新手,对其他排序方法了解不多。

最佳答案

给你。

#include <stdio.h>

void bubble_sort( int a[], size_t n )
{
for ( size_t last = n; !( n < 2 ); n = last )
{
for ( size_t i = last = 1; i < n; i++ )
{
if ( a[i] < a[i-1] )
{
int tmp = a[i];
a[i] = a[i-1];
a[i-1] = tmp;
last = i;
}
}
}
}

void sort_multiple_arrays( int * a[], size_t n )
{
for ( size_t i = 0; i < n; i++ )
{
bubble_sort( a[i] + 1, a[i][0] );
}
}

int main(void)
{
int arr1[] = { 3, 9, 6, 7 };
int arr2[] = { 2, 5, 5 };
int arr3[] = { 0 };
int arr4[] = { 1, 6 };
int arr5[] = { 4, 5, 6, 2, 1 };
int * parr[] = { arr1, arr2, arr3, arr4, arr5 };

const size_t N = sizeof( parr ) / sizeof( *parr );

sort_multiple_arrays( parr, N );

for ( size_t i = 0; i < N; i++ )
{
for ( size_t j = 0; j < parr[i][0] + 1; j++ )
{
printf( "%d ", parr[i][j] );
}
putchar( '\n' );
}

return 0;
}

程序输出为

3 6 7 9 
2 5 5
0
1 6
4 1 2 5 6

关于c - 如何使用冒泡排序或选择排序对指针数组中的数组进行降序排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43291939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com