gpt4 book ai didi

arrays - 如何在 cocoa 中对整数数组进行排序?

转载 作者:行者123 更新时间:2023-12-03 17:06:10 25 4
gpt4 key购买 nike

我是 Mac 编程新手(即 xcode 和 cocoa),我正在尝试简单地执行冒泡排序,但在这方面遇到了很多困难。

其目标是使用 9 像素内核使用中值滤波器来过滤图像。我获取所有九个像素的灰度值,然后尝试将它们放入九点数组中并对数组进行排序以提取九个像素的中值(因此无论我使用升序还是降序) )。

我一直在尝试将像素值(整数)存储到 NSMutableArray 中,但我真的不知道如何执行此操作,也不知道如何在数组时对它们进行排序已填充。

    // Perform median filter on all images in the stack 
for (x = 0; x < [curPix pwidth]; x++){
for (y = 0; y < [curPix pheight]; y++){

float value;
int tLeft, tMid, tRight, cLeft, index, cRight, bLeft, bMid, bRight; // takes in pixel placement
value = tLeft = tMid = tRight = cLeft = index = cRight = bLeft = bMid = bRight = 0;
curPos = y * [curPix pwidth] + x;

if (x != 0 && y != 0 && x != ([curPix pwidth]-1) && y != ([curPix pheight]-1)){

//Make kernel for median filter
index = fImage[curPos]; // index pixel
tLeft = fImage[index - [curPix pwidth] - 1]; // top left
tMid = fImage[index - [curPix pwidth]]; // top middle
tRight = fImage[index - [curPix pwidth] + 1]; // top right
cLeft = fImage[index - 1]; // center left
cRight = fImage[index + 1]; // center right
bLeft = fImage[index + [curPix pwidth] - 1]; // bottom left
bMid = fImage[index + [curPix pwidth]]; // bottom middle
bRight = fImage[index + [curPix pwidth] + 1]; // bottom right

// Need to make array, populate with pixels (above), and sort.
// Once sorted, take median value, save it as 'value', and store it as new pixel value

fImage[curPos] = (int) value; // return value to index
}
else {
fImage[curPos] = fImage[curPos];
}
}
}

最佳答案

How do I sort an array of ints in cocoa?

int 是 C 类型,因此与 C 中的方式相同。

Mac OS X 在标准库中附带了许多排序函数。 qsort,即快速排序,由C定义;我认为其他的来自 BSD。它们都在qsort's manpage下.

每个函数都采用一个指针大小的元素数组,因此您需要使用 long (或者,为了提高可移植性,使用 intptr_t),而不是 int,用于元素。

创建一个包含此类元素的 C 数组,手动填写,然后使用这些函数之一进行排序并找到中位数。

关于arrays - 如何在 cocoa 中对整数数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7621799/

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