Ну в общем-то да, с этим я соглашусь. Но конкретно в этом топике мы говорим про целесообразность знания сортировки пузырьком. Что могу сказать по поводу. Баблсорт мне пригодился… НИ. КОГ. ДА. Даже на собеседованиях не спрашивали. А если бы copist не описал его в соседнем комментарии — из моего сообщения выше исчез бы всего один абзац про сложность.
Я не знаком с библиотеками C++ во всех подробностях (просто потому, что стараюсь избегать этот язык всеми доступными средствами — он бессмысленно сложен). Так что ничего не скажу по поводу правильности.
Но это отличный пример, почему всегда нужно искать решение какой-то новой задачи: вы можете найти решение проще, чем придуманное вами.
В худшем случае пузырёк всё равно даст N^2: когда в неотсортированной последовательности первый элемент оказался последним.
Думаю в таком случае всё же лучше подойдёт модификация квиксорта: можно не сортировать предварительно отсортированные диапазоны, вышедшие за требуемый лимит.
И всё равно я попробую сначала найти готовую реализацию этой идеи перед тем, как писать свою.
Ну почему же. Если есть возможность взять код, который лежит на каком-нибудь stackoverflow, который перепроверен и использован десятком человек, а так же, даже если и нет, его перепроверю я (уже две пары глаз вместо одной) — есть смысл это сделать. Это уменьшает шансы появления ошибок.
> написать работающую реализацию.
Зачем? Зачем мне писать реализацию сортировки пузырьком, если я могу взять готовую сортировку из используемого фреймворка?
И даже если мне уж очень понадобится самописная сортировка, я скорее всего пойду искать оттестированую реализацию квиксорта (просто из-за того, что моя собственная оттестированной не будет)
Ловил себя на мысли, что я *не знаю* сортировку пузырьком. Не «не помню», а именно «не знаю». Видимо в этот момент на лекции АСД я спал. При том, что квинксорт и сортировку бинарными вставками я вполне себе помню.
Мне кажется, что идея с вписыванием в круг просто не работает. Как пример я могу привести квадрат с линией, выходящей из центра стороны и равной длине стороны.
Да ладно. Мне за мой рабочий опыт повышали зарплату только раз, где-то в 2010м году. На первой работе до того, как я ещё понял, что работу проще сменить, чем пройти все эти «ну, мы тут посмотрим, как ты работаешь, и, возможно, повысим через месяц или два».
Можно и φ и λ, если живёте где-нибудь в Афинах и у вас на клавиатуре есть эти символы. Правда я думаю, что это будет равносильно написанию названий переменных на русском у нас.
Я думаю очевидно, что я до сих пор не имею понятия, что такое afl и искать не собираюсь. Краткая справка в начале статьи даёт возможность понять, нужна ли мне эта штука, я могу прочитать это чисто из любопытства или я могу спокойно пройти мимо. Отсутствие оставляет 2 варианта: пройти мимо и высказать своё «фи».
А в текущем варианте получается «я открыл для себя фингербоксинг 5 лет и теперь решил применить его для покраски потолка»
Для использования в качестве элементов списка вы можете использовать такой код:
List.ItemsSource = Foos
Если вы хотите обновлять элементы из кода, то обновляемые поля должны быть INotifyPropertyChanged или ObservableCollection. Либо дёргать обновление вручную из кода, что наверняка возможно, но я не знаю как. Ибо никогда не использовал.
Но, впрочем, стоит уточнить, что C#/WPF не являются моей основной платформой уже лет 5 как. Так что я не последняя инстанция.
Всё, понял. Что неправильно понял. Можете подробнее описать, что бы хотите сделать? Вы имеете ввиду Dependency Injection?
Код, что я привёл, по сути кастомный сеттер свойства. А-ля public B Prop { set; get; }, но с поддержкой XAML, на случай, если вы хотите мгновенно реагировать на изменения в интерфейсе (например, обновлять по мере ввода текста результаты поиска)
— Где-нибудь как-нибудь устанавливаете DataContext элемента управления на экземпляр класса (пусть будет A)
— Добавляете DependencyProperty «Prop» типа B в класс A вот так:
public static readonly DependencyProperty PropProperty =
DependencyProperty.Register("Prop", typeof(<B>),
typeof(ActionPanel), new FrameworkPropertyMetadata(null, (DependencyObject d, DependencyPropertyChangedEventArgs e) => {
// Вот тут ваш callback
}));
public B Prop
{
set { SetValue(PropProperty, value); }
get { return (B)GetValue(PropProperty); }
}
— Биндите свойство в Xaml как вам нужно (если свойство меняется из интерфейса — скорее всего понадобится TwoWay binding) ( <local:A Prop="{Binding}" />)
P.S.: Да, я знаю, что код ужасен. Именно поэтому я жалею об отсутствии препроцессора: он помог бы обернуть бойлерплэйт во что-нибудь вменяемое.
В стандартной разметке это вполне можно сделать через Dependity Property, на который забинден объект. Другой вопрос, что этот код не отличается вменяемостью (место, в котором я ДЕЙСТВИТЕЛЬНО жалею об отсутствии препроцессора в C#)
Но это отличный пример, почему всегда нужно искать решение какой-то новой задачи: вы можете найти решение проще, чем придуманное вами.
Думаю в таком случае всё же лучше подойдёт модификация квиксорта: можно не сортировать предварительно отсортированные диапазоны, вышедшие за требуемый лимит.
И всё равно я попробую сначала найти готовую реализацию этой идеи перед тем, как писать свою.
Зачем? Зачем мне писать реализацию сортировки пузырьком, если я могу взять готовую сортировку из используемого фреймворка?
И даже если мне уж очень понадобится самописная сортировка, я скорее всего пойду искать оттестированую реализацию квиксорта (просто из-за того, что моя собственная оттестированной не будет)
А вообще это был сарказм.
А в текущем варианте получается «я открыл для себя фингербоксинг 5 лет и теперь решил применить его для покраски потолка»
List.ItemsSource = Foos
Если вы хотите обновлять элементы из кода, то обновляемые поля должны быть INotifyPropertyChanged или ObservableCollection. Либо дёргать обновление вручную из кода, что наверняка возможно, но я не знаю как. Ибо никогда не использовал.
Но, впрочем, стоит уточнить, что C#/WPF не являются моей основной платформой уже лет 5 как. Так что я не последняя инстанция.
Код, что я привёл, по сути кастомный сеттер свойства. А-ля public B Prop { set; get; }, но с поддержкой XAML, на случай, если вы хотите мгновенно реагировать на изменения в интерфейсе (например, обновлять по мере ввода текста результаты поиска)
— Добавляете DependencyProperty «Prop» типа B в класс A вот так:
— Биндите свойство в Xaml как вам нужно (если свойство меняется из интерфейса — скорее всего понадобится TwoWay binding) ( <local:A Prop="{Binding}" />)
P.S.: Да, я знаю, что код ужасен. Именно поэтому я жалею об отсутствии препроцессора: он помог бы обернуть бойлерплэйт во что-нибудь вменяемое.