Re: Sort question - Fractions, Metric etc

Поиск
Список
Период
Сортировка
От Bret Stern
Тема Re: Sort question - Fractions, Metric etc
Дата
Msg-id 643df9bf-7378-93fb-1c8c-fe31f08ec214@machinemanagement.com
обсуждение исходный текст
Ответ на Re: Sort question - Fractions, Metric etc  ("Gogala, Mladen" <gogala.mladen@gmail.com>)
Ответы Re: Sort question - Fractions, Metric etc  (Adrian Klaver <adrian.klaver@aklaver.com>)
Список pgsql-general

Here's the clip of the UI. The user selects whatever value the vendor provides for unit thickness. The data entry

people aren't comfortable converting.

At this point the sort_order column managed to do the trick....but going forward on my next

application, I can see a different approach.

Are you suggesting a function like this shellsort used with an array.

https://www.geeksforgeeks.org/shellsort/

// C++ implementation of Shell Sort

#include <iostream>
using namespace std;

/* function to sort arr using shellSort */
int shellSort(int arr[], int n)
{
    // Start with a big gap, then reduce the gap
    for (int gap = n/2; gap > 0; gap /= 2)
    {
        // Do a gapped insertion sort for this gap size.
        // The first gap elements a[0..gap-1] are already in gapped order
        // keep adding one more element until the entire array is
        // gap sorted
        for (int i = gap; i < n; i += 1)
        {
            // add a[i] to the elements that have been gap sorted
            // save a[i] in temp and make a hole at position i
            int temp = arr[i];

            // shift earlier gap-sorted elements up until the correct
            // location for a[i] is found
            int j;       
            for (j = i; j >= gap && arr[j - gap] > temp; j -= gap)
                arr[j] = arr[j - gap];
           
            // put temp (the original a[i]) in its correct location
            arr[j] = temp;
        }
    }
    return 0;
}

void printArray(int arr[], int n)
{
    for (int i=0; i<n; i++)
        cout << arr[i] << " ";
}

int main()
{
    int arr[] = {12, 34, 54, 2, 3}, i;
    int n = sizeof(arr)/sizeof(arr[0]);

    cout << "Array before sorting: \n";
    printArray(arr, n);

    shellSort(arr, n);

    cout << "\nArray after sorting: \n";
    printArray(arr, n);

    return 0;
}

Array before sorting:
12 34 54 2 3
Array after sorting:
2 3 12 34 54




On 8/14/2021 12:51 PM, Gogala, Mladen wrote:
I would write a stable function converting everything to metric (or imperial, depends on your preferences) and sort on the return of the function. Since unit conversion functions do not need to modify the database and should always return the same values for the same arguments, the function can be used within a query (that is the meaning of the keyword "STABLE")  and you can use it for sorting stuff

Regards

On 8/14/2021 12:14 PM, Bret Stern wrote:
I have a table with metric, imperial, fraction columns.

Is there a way to sort correctly using imperial (eg; .125, .375, .437 -> 1., 1.125)

Couldn't handle it with ORDER BY ASC, DESC args so I added a sort_column and sorted based

on those values eg; 1,2,3,4,5,6 indicating the value I need to show in which sequence.


Just curious what the pro's do

Bret


Вложения

В списке pgsql-general по дате отправления:

Предыдущее
От: Guyren Howe
Дата:
Сообщение: Re: Sort question - Fractions, Metric etc
Следующее
От: Adrian Klaver
Дата:
Сообщение: Re: Sort question - Fractions, Metric etc