public static RecursList <int> ForthTask(RecursList <int> t, int b) { var res = new RecursList <int>(); for (int i = 0; i < t.Length; i++) { if (t[i] < b) { res.Add(t[i]); } } for (int i = 0; i < t.Length; i++) { if (t[i] == b) { res.Add(t[i]); } } for (int i = 0; i < t.Length; i++) { if (t[i] > b) { res.Add(t[i]); } } return(res); }
public static void FifthTask(RecursList <int> t) { Console.WriteLine("Начальный список:"); t.Print(); int max = 0; int min = 0; for (int i = 0; i < t.Length; i++) { if (t[i] > t[max]) { max = t[i]; } } Console.WriteLine("Max index = {0}", max); for (int i = 0; i < t.Length; i++) { if (t[i] < t[min]) { min = t[i]; } } Console.WriteLine("Min index = {0}", min); Console.WriteLine(); t.SwapRef(min, max); t.Print(); }
static int part_sort(RecursList <int> a) { int s = 1, e = a.Length - 1; while (s <= e) { while (s != a.Length && a[s] < a[0]) { s++; } while (e != 0 && a[e] > a[0]) { e--; } if (s <= e) { int temp = a[s]; a[s] = a[e]; a[e] = temp; s += 1; e -= 1; } } int temp1 = a[0]; a[0] = a[e]; a[e] = temp1; return(e); }
private void printDebug(RecursList <T> Item) { if (Item.Tail != null) { printDebug(Item.Tail); } Console.WriteLine("[{1}] = {0} | {2}", Item.Info, Item.Index, Item.Length); }
private void print(RecursList <T> Item) { if (Item.Tail != null) { print(Item.Tail); } Console.Write("{0} ", Item.Info); }
public void Add(T value)//добавление элемента { Tail = new RecursList <T>(Info, Tail); Info = value; Index++; if (Index == 0) { Tail = null; } }
public static void FirstTask(RecursList <int> t) { for (int i = 0; i < t.Length; i++) { if (t[i] % 2 == 0) { t.Del(i); } } }
public static void TenTask(RecursList <int> a) { if (a.Length <= 1) { return; } if (a.Length == 2) { if (a[0] > a[1]) { int temp = a[0]; a[0] = a[1]; a[1] = temp; } return; } int ind = part_sort(a); if (ind == 0) { var a2 = new RecursList <int>(); for (int i = ind + 1; i < a.Length; i++) { a2.Add(a[i]); } TenTask(a2); for (int i = ind + 1; i < a.Length; i++) { a[i] = a2[i - ind - 1]; } } else { var a1 = new RecursList <int>(); for (int i = 0; i < ind; i++) { a1.Add(a[i]); } var a2 = new RecursList <int>(); for (int i = ind + 1; i < a.Length; i++) { a2.Add(a[i]); } TenTask(a1); TenTask(a2); for (int i = ind + 1; i < a.Length; i++) { a[i] = a2[i - ind - 1]; } for (int i = 0; i < ind; i++) { a[i] = a1[i]; } } }
public int Find(T value)//поиск элемента { for (RecursList <T> i = this; i != null; i = i.Tail) { if (i.Info.Equals(value)) { return(i.Index); } } return(-1); }
}// public List <int> FindAll(T value) { List <int> temp = new List <int>(); for (RecursList <T> i = this; i != null; i = i.Tail) { if (i.Info.Equals(value)) { temp.Add(i.Index); } } return(temp); }
static void sort(RecursList <int> t) { for (int i = 0; i < t.Length; i++) { for (int j = t.Length - 1; j > i; j--) { if (t[j] < t[j - 1]) { t.Swap(j, j - 1); } } } }
private RecursList(T value, RecursList <T> othertail) { Info = value; Tail = othertail; if (othertail != null) { Index = othertail.Index + 1; } else { Index = 0; } }
public T this[int index]//индексатор списка { get { try { if (index < 0 || index >= Length) { throw new Exception("Индекс за границей списка"); } } catch (Exception e) { Console.WriteLine(e.Message); return(default(T)); } for (RecursList <T> i = this; i != null; i = i.Tail) { if (i.Index == index) { return(i.Info); } } return(default(T)); } set { try { if (index < 0 || index >= Length) { throw new Exception("Индекс за границей списка"); } } catch (Exception e) { Console.WriteLine(e.Message); return; } for (RecursList <T> i = this; i != null; i = i.Tail) { if (i.Index == index) { i.Info = value; } } } }
public static int NineTask(RecursList <int> a) { var t = new RecursList <int>(); for (int i = 0; i < a.Length; i++) { if (t.Find(a[i]) == -1) { t.Add(a[i]); } } //t.Print(); return(t.Length); }
public static void sortSimple(RecursList <int> mas) { for (int i = 1; i < mas.Length; i++) { if (mas[i - 1] > mas[i]) { int j = i - 1; int temp = mas[i]; while (j >= 0 && mas[j] > temp) { mas[j + 1] = mas[j--]; } mas[++j] = temp; } } }
public void Del(int index) { try { if (index < 0 || index >= Length) { throw new Exception("Индекс находится за границей списка"); } } catch (Exception e) { Console.WriteLine(e.Message); return; } #region Удаление последнего элемента if (index == Index) { Index--; if (Index == -1) { return; } Info = Tail.Info; Tail = Tail.Tail; return; } #endregion RecursList <T> i = this; for (; i.Tail.Tail != null; i = i.Tail) { i.Index--; if (i.Tail.Index == index) { i.Tail = i.Tail.Tail; return; } } if (index == 0) { i.Tail = null; i.Index--; } }
public static int EightTask(RecursList <int> t, RecursList <int> p) { sortSimple(t); sortSimple(p); int count = 0; for (int i = 0; i < t.Length; i++) { for (int j = 0; j < p.Length; j++) { if (t[i] == p[j]) { count++; } } } return(count); }
public static RecursList <int> SecondTask(RecursList <int> t) { var res = new RecursList <int>(); for (int i = 0; i < t.Length; i++) { if (t[i] % 2 == 0) { res.Add(t[i]); } } for (int i = 0; i < t.Length; i++) { if (t[i] % 2 != 0) { res.Add(t[i]); } } return(res); }
public void SwapRef(int first, int second)//меняет ссылки { RecursList <T> f = null, s = null; if (Index != first && Index != second) { for (RecursList <T> i = this; i.Tail != null; i = i.Tail) { if (i.Tail.Index == first) { f = i; break; } } for (RecursList <T> i = this; i.Tail != null; i = i.Tail) { if (i.Tail.Index == second) { s = i; break; } } if (f == null || s == null) { return; } var t = f.Tail; f.Tail = s.Tail; s.Tail = t; t = f.Tail.Tail; f.Tail.Tail = s.Tail.Tail; s.Tail.Tail = t; f.Tail.Index = first; s.Tail.Index = second; } else { Swap(first, second); } }
static void Main(string[] args) { var t = new RecursList <int>(); var rnd = new Random(); for (int i = 1; i <= 10; i++) { t.Add(i); } //FirstTask(t); //t.Print(); //SecondTask(t).Print(); //Console.WriteLine(ThirdTask("({})[]")); // for task 4 RecursList <int> rl = new RecursList <int>(); for (int i = 0; i < 10; i++) { rl.Add(rnd.Next(100)); } var c = new CountTimeAndExport2EXCEL.CountTime(sort); CountTimeAndExport2EXCEL.FunWithExcel.Save(c.StartCount(), @"E:\ALG\lab2.1.xlsx"); /*rl.Print(); * sort(rl); * rl.Print();*/ //ForthTask(rl, 3).Print(); //FifthTask(t); //SeventhTask(t).Print(); //t.Print(); //sortSimple(rl); //rl.Print(); //Console.WriteLine(); //Console.WriteLine(EightTask(t, rl)); }
public void Insert(int index, T value) { try { if (index < 0 || index > Length) { throw new Exception("Индекс находится за границей списка"); } } catch (Exception e) { Console.WriteLine(e.Message); return; } if (index == Length) { Add(value); return; } if (Index == -1) { Add(value); return; } for (RecursList <T> i = this; i != null; i = i.Tail) { if (i.Index == index) { i.Tail = new RecursList <T>(value, i.Tail); i.Index++; return; } i.Index++; } }
public RecursList(T value) { Info = value; Tail = null; Index = 0; }
public static RecursList <int> SeventhTask(RecursList <int> t) { t.Reverse(); return(t); }
public RecursList() { Info = default(T); Tail = null; Index = -1; }
public void DelAll() { Index = -1; Tail = null; }