| ??? 05/15/08 18:59 Read: times |
#154800 - Sorts Responding to: ???'s previous message |
Here are some sorts I only post them because I found them on Goggle since I was on a short dead line
You should really read up on the concepts since there are many sorts with there own pluses and minuses
void bubblesort(BYTE *array, INT8U elements)
{
INT8U i;
INT8U j;
INT8U temp;
for(i = (elements - 1); i> 0; i--)
{
for(j=0; j < i; j++)
{
if(array[j] > array[j+1])
{
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
Then the selection sort ( two versions no I do not remember why):
//***********************************************
//***********************************************
/*
void selectionSorta(INT8U *array, INT8U size)
{
INT8U i;
INT8U j;
INT8U min;
INT8U temp;
for (i = 0; i < size - 1; i++)
{
min = i;
for (j = i+1; j < size; j++)
{
if (array[j] < array[min])
min = j;
}
// swap
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
*/
//***********************************************
//***********************************************
/*
void selectionSort(INT8U *array, INT8U size)
{
INT8U i;
INT8U j;
INT8U index_of_max;
INT8U temp;
for(i=0; i<size; i++)
{
index_of_max = i;
for(j=i; j<size; j++)
{
if(array[index_of_max]>array[j])
{
index_of_max = j;
}
}
temp = array[i];
array[i] = array[index_of_max];
array[index_of_max] = temp;
}
}
I too was doing median and settled on the insertion sort Note tha you can do this sort one at a time while you are waiting for the next A/D Sample. Additionally you only need to store half the items for a median. Anything above or below the median value falls off the value you need is now the first or last in the array. ( As suggested by the C Group on USNET
//***********************************************
// Insert into array assending, Highest element falls off
// Preclear to Lowest value
// 8,9,10,11,12,...
//***********************************************
/*
void insertionSortAscending(INT8U value, INT8U *array, INT8U size)
{
INT8U i, j;
i = 0;
do
{
if(value < array[i]) // find proper place
{
for(j=size-1; j>i; j--) // Move other elements up to make a space
{
array[j] = array[j-1];
}
array[i] = value; //and save save new element
break; // done
}
i++;
}
while(i < size);
}
*/
//***********************************************
// Insert into array Descending, lowest element falls off
// Preclear to Lowest value
// 12,11,10,9,8,...
//***********************************************
void insertionSortDescending(INT8U value, INT8U *array, INT8U size)
{
INT8U i, j;
i = 0;
do
{
if(value > array[i]) // find proper place
{
for(j=size-1; j>i; j--) // Move other elements up to make a space
{
array[j] = array[j-1];
}
array[i] = value; //and save save new element
break; // done
}
i++;
}
while(i < size);
}
|
| Topic | Author | Date |
| Sort array data elements? | 01/01/70 00:00 | |
| Sort and Search? | 01/01/70 00:00 | |
| Neil..... | 01/01/70 00:00 | |
| 64 samples is big for a median filter ... | 01/01/70 00:00 | |
| No I haven't.....only because | 01/01/70 00:00 | |
| Google for "sorting algorithms" | 01/01/70 00:00 | |
| Ok, first things first then. | 01/01/70 00:00 | |
| The MPU and LDO are all in order | 01/01/70 00:00 | |
| Quantization error ? | 01/01/70 00:00 | |
| the step size dependacy makes its problematic | 01/01/70 00:00 | |
Sorts | 01/01/70 00:00 | |
| ??? | 01/01/70 00:00 | |
| Couldn't sort it... | 01/01/70 00:00 |



