为什么做街舞网站制作演示网站

pingmian/2026/1/21 4:55:04/文章来源:
为什么做街舞网站,制作演示网站,企业网站服务器,微信电脑版Timsort#xff08;泰姆排序#xff09;是一种混合排序算法#xff0c;结合了合并排序#xff08;Merge Sort#xff09;和插入排序#xff08;Insertion Sort#xff09;的特性。它由Tim Peters在2002年为Python的排序算法而设计#xff0c;并在Python 2.3版本中首次实…Timsort泰姆排序是一种混合排序算法结合了合并排序Merge Sort和插入排序Insertion Sort的特性。它由Tim Peters在2002年为Python的排序算法而设计并在Python 2.3版本中首次实现。 Tim Sort 是Python 的sorted()和list.sort()函数使用的默认排序算法。 自从该算法被发明以来它已被用作Python、Java、Android平台和GNU Octave中的默认排序算法。Java中使用Java的标准库java.util.Arrays类来使用Timsort。 import java.util.Arrays; public class TimsortExample { public static void main(String[] args) { // 示例数据 int[] array {5, 2, 9, 1, 5, 6}; // 使用Arrays.sort()方法底层使用Timsort Arrays.sort(array); // 打印排序后的结果 System.out.println(Sorted Array: Arrays.toString(array)); } } 这个简单的示例演示了如何使用Java的Arrays.sort()方法对一个整数数组进行排序。在实际应用中你可以用类似的方式对其他类型的数组或对象数组进行排序。 请注意Java的Arrays.sort()方法使用了Timsort的实现因此你不需要自己实现Timsort算法除非你有特殊的需求。 Timsort一种非常快速、O(n log n)、稳定的排序算法专为现实世界构建而不是在学术界构建。 Timsort的设计目的是克服其他排序算法在特定情况下的性能缺陷。它在实际应用中表现良好尤其在处理有序数据或包含小规模子数组的数据时效果显著。 Timsort的主要思想是利用现实世界数据的一些特性例如数据通常部分有序。它采用分而治之的策略首先将数据分割成小的块然后对这些块进行排序最后再将这些有序块合并起来。该算法具有线性对数时间复杂度O(n log n)并且在最坏情况下的性能也比较好。 蒂姆排序算法 Tim Sort 背后的主要思想是利用数据中现有的顺序来最大限度地减少比较和交换的次数。它通过将数组划分为已排序的称为运行的小子数组然后使用修改后的合并排序算法合并这些运行来实现此目的。 以下面的数组为例arr[] {4, 2, 8, 6, 1, 5, 9, 3, 7}。 步骤 1定义运行的大小 最小运行规模32由于我们的数组较小因此忽略这一步 步骤 2将阵列划分为运行 在这一步中我们将使用插入排序对数组中的小子序列运行进行排序。 初始数组[4, 2, 8, 6, 1, 5, 9, 3, 7] 没有初始运行因此我们将使用插入排序创建运行。 排序后的运行[2, 4], [6, 8], [1, 5, 9], [3, 7] 更新数组[2, 4, 6, 8, 1, 5, 9, 3, 7] 步骤 3合并运行 在这一步中我们将使用修改后的合并排序算法合并已排序的运行。 合并运行直到整个数组排序完毕。 合并运行[2, 4, 6, 8], [1, 3, 5, 7, 9] 更新后的数组[2, 4, 6, 8, 1, 3, 5, 7, 9] 步骤 4调整运行规模 每次合并操作后我们都会将运行的大小加倍直到超过数组的长度。 运行大小加倍32、64、128因为我们的数组很小所以忽略这一步 第 5 步继续合并 重复合并过程直到整个数组排序完毕。 最终合并的运行结果[1, 2, 3, 4, 5, 6, 7, 8, 9] 最终排序后的数组为 [123456789]。 下面是 TimSort 的实现 // C program to perform TimSort.  include bits/stdc.h  using namespace std;  const int RUN 32;  // 该函数对数组进行排序从左索引 // 索引排序到右索引右索引是 // 最大的 RUN void insertionSort(int arr[], int left, int right)  {  for (int i left 1; i right; i) {  int temp arr[i];  int j i - 1;  while (j left arr[j] temp) {  arr[j 1] arr[j];  j--;  }  arr[j 1] temp;  }  }  // 合并函数合并已排序的运行结果 void merge(int arr[], int l, int m, int r)  {  // 原始数组被分成两部分 // 左右两部分 int len1 m - l 1, len2 r - m;  int left[len1], right[len2];  for (int i 0; i len1; i)  left[i] arr[l i];  for (int i 0; i len2; i)  right[i] arr[m 1 i];  int i 0;  int j 0;  int k l;  // 比较之后我们 // 合并这两个数组 // 合并为更大的子数组 while (i len1 j len2) {  if (left[i] right[j]) {  arr[k] left[i];  i;  }  else {  arr[k] right[j];  j;  }  k;  }  // 复制 // 如果有的话 while (i len1) {  arr[k] left[i];  k;  i;  }  // Copy remaining element of  // right, if any  while (j len2) {  arr[k] right[j];  k;  j;  }  }  //迭代 Timsort 函数用于对 // 数组[0...n-1]排序类似于合并排序 void timSort(int arr[], int n)  {  // 对大小为 RUN 的单个子数组进行排序 for (int i 0; i n; i RUN)  insertionSort(arr, i, min((i RUN - 1), (n - 1)));  // 从 RUN或 32开始合并。 // 它将合并 // 形成大小为 64然后是 128、256 // 以此类推 .... for (int size RUN; size n; size 2 * size) {  // 选择 // 左侧子数组的起点。我们 // 合并 // arr[left...leftsize-1] 和 arr[leftsize, left2*size-1] 合并。 // 和 arr[leftsize, left2*size-1] 进行合并。 // 每次合并后我们 // 将 left 增加 2*size for (int left 0; left n; left 2 * size) {  //查找 // 左侧子数组 // mid1 是右子数组的起点 //右子数组的起点 int mid left size - 1;  int right min((left 2 * size - 1), (n - 1));  //合并子数组 arr[left.....mid] // arr[mid1....right] if (mid right)  merge(arr, left, mid, right);  }  }  }  // Utility function to print the Array  void printArray(int arr[], int n)  {  for (int i 0; i n; i)  printf(%d , arr[i]);  printf(\n);  }  // Driver program to test above function  int main()  {  int arr[] { -2, 7, 15, -14, 0, 15, 0, 7,  -7, -4, -13, 5, 8, -14, 12 };  int n sizeof(arr) / sizeof(arr[0]);  printf(Given Array is\n);  printArray(arr, n);  // Function Call  timSort(arr, n);  printf(After Sorting Array is\n);  printArray(arr, n);  return 0;  } Java程序 // Java program to perform TimSort.  class GFG {  static int MIN_MERGE 32;  public static int minRunLength(int n)  {  assert n 0;  // Becomes 1 if any 1 bits are shifted off  int r 0;  while (n MIN_MERGE) {  r | (n 1);  n 1;  }  return n r;  }  // This function sorts array from left index to  // to right index which is of size atmost RUN  public static void insertionSort(int[] arr, int left,  int right)  {  for (int i left 1; i right; i) {  int temp arr[i];  int j i - 1;  while (j left arr[j] temp) {  arr[j 1] arr[j];  j--;  }  arr[j 1] temp;  }  }  // Merge function merges the sorted runs  public static void merge(int[] arr, int l, int m, int r)  {  // Original array is broken in two parts  // left and right array  int len1 m - l 1, len2 r - m;  int[] left new int[len1];  int[] right new int[len2];  for (int x 0; x len1; x) {  left[x] arr[l x];  }  for (int x 0; x len2; x) {  right[x] arr[m 1 x];  }  int i 0;  int j 0;  int k l;  // After comparing, we merge those two array  // in larger sub array  while (i len1 j len2) {  if (left[i] right[j]) {  arr[k] left[i];  i;  }  else {  arr[k] right[j];  j;  }  k;  }  // Copy remaining elements  // of left, if any  while (i len1) {  arr[k] left[i];  k;  i;  }  // Copy remaining element  // of right, if any  while (j len2) {  arr[k] right[j];  k;  j;  }  }  // Iterative Timsort function to sort the  // array[0...n-1] (similar to merge sort)  public static void timSort(int[] arr, int n)  {  int minRun minRunLength(MIN_MERGE);  // Sort individual subarrays of size RUN  for (int i 0; i n; i minRun) {  insertionSort(  arr, i,  Math.min((i MIN_MERGE - 1), (n - 1)));  }  // Start merging from size  // RUN (or 32). It will  // merge to form size 64,  // then 128, 256 and so on  // ....  for (int size minRun; size n; size 2 * size) {  // Pick starting point  // of left sub array. We  // are going to merge  // arr[left..leftsize-1]  // and arr[leftsize, left2*size-1]  // After every merge, we  // increase left by 2*size  for (int left 0; left n; left 2 * size) {  // Find ending point of left sub array  // mid1 is starting point of right sub  // array  int mid left size - 1;  int right Math.min((left 2 * size - 1),  (n - 1));  // Merge sub array arr[left.....mid]   // arr[mid1....right]  if (mid right)  merge(arr, left, mid, right);  }  }  }  // Utility function to print the Array  public static void printArray(int[] arr, int n)  {  for (int i 0; i n; i) {  System.out.print(arr[i] );  }  System.out.print(\n);  }  // Driver code  public static void main(String[] args)  {  int[] arr { -2, 7, 15, -14, 0, 15, 0, 7,  -7, -4, -13, 5, 8, -14, 12 };  int n arr.length;  System.out.println(Given Array is);  printArray(arr, n);  timSort(arr, n);  System.out.println(After Sorting Array is);  printArray(arr, n);  }  }  Python3 # Python3 program to perform basic timSort  MIN_MERGE 32 def calcMinRun(n):  Returns the minimum length of a  run from 23 - 64 so that  the len(array)/minrun is less than or  equal to a power of 2.  e.g. 11, ..., 6363, 6432, 6533,  ..., 12764, 12832, ...  r 0 while n MIN_MERGE:  r | n 1 n 1 return n r  # This function sorts array from left index to  # to right index which is of size atmost RUN  def insertionSort(arr, left, right):  for i in range(left 1, right 1):  j i  while j left and arr[j] arr[j - 1]:  arr[j], arr[j - 1] arr[j - 1], arr[j]  j - 1 # Merge function merges the sorted runs  def merge(arr, l, m, r):  # original array is broken in two parts  # left and right array  len1, len2 m - l 1, r - m  left, right [], []  for i in range(0, len1):  left.append(arr[l i])  for i in range(0, len2):  right.append(arr[m 1 i])  i, j, k 0, 0, l  # after comparing, we merge those two array  # in larger sub array  while i len1 and j len2:  if left[i] right[j]:  arr[k] left[i]  i 1 else:  arr[k] right[j]  j 1 k 1 # Copy remaining elements of left, if any  while i len1:  arr[k] left[i]  k 1 i 1 # Copy remaining element of right, if any  while j len2:  arr[k] right[j]  k 1 j 1 # Iterative Timsort function to sort the  # array[0...n-1] (similar to merge sort)  def timSort(arr):  n len(arr)  minRun calcMinRun(n)  # Sort individual subarrays of size RUN  for start in range(0, n, minRun):  end min(start minRun - 1, n - 1)  insertionSort(arr, start, end)  # Start merging from size RUN (or 32). It will merge  # to form size 64, then 128, 256 and so on ....  size minRun  while size n:  # Pick starting point of left sub array. We  # are going to merge arr[left..leftsize-1]  # and arr[leftsize, left2*size-1]  # After every merge, we increase left by 2*size  for left in range(0, n, 2 * size):  # Find ending point of left sub array  # mid1 is starting point of right sub array  mid min(n - 1, left size - 1)  right min((left 2 * size - 1), (n - 1))  # Merge sub array arr[left.....mid]   # arr[mid1....right]  if mid right:  merge(arr, left, mid, right)  size 2 * size  # Driver program to test above function  if __name__ __main__:  arr [-2, 7, 15, -14, 0, 15, 0,  7, -7, -4, -13, 5, 8, -14, 12]  print(Given Array is)  print(arr)  # Function Call  timSort(arr)  print(After Sorting Array is)  print(arr)  Cinclude // C# program to perform TimSort.  using System;  class GFG {  public const int RUN 32;  // This function sorts array from left index to  // to right index which is of size atmost RUN  public static void insertionSort(int[] arr, int left,  int right)  {  for (int i left 1; i right; i) {  int temp arr[i];  int j i - 1;  while (j left arr[j] temp) {  arr[j 1] arr[j];  j--;  }  arr[j 1] temp;  }  }  // merge function merges the sorted runs  public static void merge(int[] arr, int l, int m, int r)  {  // original array is broken in two parts  // left and right array  int len1 m - l 1, len2 r - m;  int[] left new int[len1];  int[] right new int[len2];  for (int x 0; x len1; x)  left[x] arr[l x];  for (int x 0; x len2; x)  right[x] arr[m 1 x];  int i 0;  int j 0;  int k l;  // After comparing, we merge those two array  // in larger sub array  while (i len1 j len2) {  if (left[i] right[j]) {  arr[k] left[i];  i;  }  else {  arr[k] right[j];  j;  }  k;  }  // Copy remaining elements  // of left, if any  while (i len1) {  arr[k] left[i];  k;  i;  }  // Copy remaining element  // of right, if any  while (j len2) {  arr[k] right[j];  k;  j;  }  }  // Iterative Timsort function to sort the  // array[0...n-1] (similar to merge sort)  public static void timSort(int[] arr, int n)  {  // Sort individual subarrays of size RUN  for (int i 0; i n; i RUN)  insertionSort(arr, i,  Math.Min((i RUN - 1), (n - 1)));  // Start merging from size RUN (or 32).  // It will merge  // to form size 64, then  // 128, 256 and so on ....  for (int size RUN; size n; size 2 * size) {  // Pick starting point of  // left sub array. We  // are going to merge  // arr[left..leftsize-1]  // and arr[leftsize, left2*size-1]  // After every merge, we increase  // left by 2*size  for (int left 0; left n; left 2 * size) {  // Find ending point of left sub array  // mid1 is starting point of  // right sub array  int mid left size - 1;  int right Math.Min((left 2 * size - 1),  (n - 1));  // Merge sub array arr[left.....mid]   // arr[mid1....right]  if (mid right)  merge(arr, left, mid, right);  }  }  }  // Utility function to print the Array  public static void printArray(int[] arr, int n)  {  for (int i 0; i n; i)  Console.Write(arr[i] );  Console.Write(\n);  }  // Driver program to test above function  public static void Main()  {  int[] arr { -2, 7, 15, -14, 0, 15, 0, 7,  -7, -4, -13, 5, 8, -14, 12 };  int n arr.Length;  Console.Write(Given Array is\n);  printArray(arr, n);  // Function Call  timSort(arr, n);  Console.Write(After Sorting Array is\n);  printArray(arr, n);  }  }  Javascript script  // Javascript program to perform TimSort.  let MIN\_MERGE 32;  function minRunLength(n)  {           // Becomes 1 if any 1 bits are shifted off      let r 0;      while (n MIN\_MERGE)      {          r | (n 1);          n 1;      }      return n r;  }  // This function sorts array from left index to  // to right index which is of size atmost RUN  function insertionSort(arr,left,right)  {      for(let i left 1; i right; i)      {          let temp arr\[i\];          let j i - 1;                   while (j left arr\[j\] temp)          {              arr\[j 1\] arr\[j\];              j--;          }          arr\[j 1\] temp;      }  }  // Merge function merges the sorted runs  function merge(arr, l, m, r)  {           // Original array is broken in two parts      // left and right array      let len1 m - l 1, len2 r - m;      let left new Array(len1);      let right new Array(len2);      for(let x 0; x len1; x)      {          left\[x\] arr\[l x\];      }      for(let x 0; x len2; x)      {          right\[x\] arr\[m 1 x\];      }      let i 0;      let j 0;      let k l;      // After comparing, we merge those two      // array in larger sub array      while (i len1 j len2)      {          if (left\[i\] right\[j\])          {              arr\[k\] left\[i\];              i;          }          else         {              arr\[k\] right\[j\];              j;          }          k;      }      // Copy remaining elements      // of left, if any      while (i len1)      {          arr\[k\] left\[i\];          k;          i;      }      // Copy remaining element      // of right, if any      while (j len2)      {          arr\[k\] right\[j\];          k;          j;      }  }  // Iterative Timsort function to sort the  // array\[0...n-1\] (similar to merge sort)  function timSort(arr, n)  {      let minRun minRunLength(MIN\_MERGE);               // Sort individual subarrays of size RUN      for(let i 0; i n; i minRun)      {          insertionSort(arr, i, Math.min(              (i MIN\_MERGE - 1), (n - 1)));      }      // Start merging from size      // RUN (or 32). It will      // merge to form size 64,      // then 128, 256 and so on      // ....      for(let size minRun; size n; size 2 \* size)      {                   // Pick starting point          // of left sub array. We          // are going to merge          // arr\[left..leftsize-1\]          // and arr\[leftsize, left2\*size-1\]          // After every merge, we          // increase left by 2\*size          for(let left 0; left n;                          left 2 \* size)          {              // Find ending point of left sub array              // mid1 is starting point of right sub              // array              let mid left size - 1;              let right Math.min((left 2 \* size - 1),                                      (n - 1));              // Merge sub array arr\[left.....mid\]               // arr\[mid1....right\]              if(mid right)                  merge(arr, left, mid, right);          }      }  }  // Utility function to print the Array  function printArray(arr,n)  {      for(let i 0; i n; i)      {          document.write(arr\[i\] );      }      document.write( );  }  // Driver code  let arr \[ -2, 7, 15, -14, 0, 15, 0, 7,              -7, -4, -13, 5, 8, -14, 12 \];  let n arr.length;  document.write(Given Array is );  printArray(arr, n);  timSort(arr, n);  document.write(After Sorting Array is );  printArray(arr, n);  /script Output Given Array is -2  7  15  -14  0  15  0  7  -7  -4  -13  5  8  -14  12   After Sorting Array is -14  -14  -13  -7  -4  -2  0  0  5  7  7  8  12  15  15 https://www.jdon.com/71611.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/87220.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

成都营销类网站设计网站管理与建设

目录 力扣1089. 复写零 解析代码 力扣1089. 复写零 1089. 复写零 - 力扣(LeetCode) 难度 简单 给你一个长度固定的整数数组 arr ,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。 注意:请不要在…

登封做网站关键词排名优化公司

404错误是一个HTTP状态代码,这意味着你试图在网站上访问的页面在他们的服务器上找不到。 需要明确的是,该错误表示虽然服务器本身是可访问的,但显示该错误的特定页面是不可访问的。 个别网站经常自定义这个错误信息。所以,请记住,错误可能会以任何可以想象的方式出现,这…

建站与备案的具体流程是什么云主机网站的空间在哪里看

我在js文件中开了个定时器,每1s从后端获取数据并解析,然后用异步方法就渲染不出来,改成同步就可以了。 这个解决方法来自于这篇文章,我出的问题和他一样:关于ajax中readyState的值一直为1的问题 这里将ajax参数修改为f…

关于征求网站建设的意见工地包工接活十大平台

Android 的 WMS(Window Manager Service)是一个关键组件,负责管理窗口的创建、显示、布局和交互等。Window 的操作有两大部分,一部分是 WindowManager 来处理,一部分是 WMS 来处理,如下图所示: …

株洲的网站建设响应式网站排名如何

1、同一个bank下如果有多个threads access 不同的地址,就会出现bank conflicts, 2、如果是多个threads read 同一个bank内的同一个地址,就是broadcast 模式没有bank conflicts,这种情况下带宽利用率较低,因为只用了一个bank资源…

安阳网站关键词优化gta买办公室网站建设中

目录 算法的执行效率和资源消耗、时间和空间复杂度分析 执行效率和资源消耗 时间复杂度分析 空间复杂度分析 实际应用 面试技巧 根据实际场景,选用合适的数据结构和算法进行程序设计 所根据原则 实例 如何选择数据结构示例 合适的数据结构:哈…

西安教育类网站建设公司建站助手官网

于今天的新生代父母而言,在诸多消费观念被改变的当下,新生父母们在育儿上更强调精细化,在这种情况下,母婴市场的消费升级已是大势所趋。不过,在如今收入增速整体放缓的背景下,各细分赛道的消费升级都出现了…

做网站推广方法有哪些长沙黄花机场公众号

发现自身数字化滞后的公司正在遭受因为在二十年前所做的战略决策的煎熬。这里我们将阐述如何才能迎头赶上。 发展数字化战略的公司正在努力促进转型,因为大多数首席信息官(CIO)还没有能力成为数字化领导者。根据Caldwell Partners公司的技术、数字和数据领导事务的管…

上海营销型网站建设费用wordpress后台可视化编辑器

在Redis中设置一个键值对并为其指定过期时间,可以使用 SET 命令结合 EXPIRE 命令来实现,或者直接使用 SETEX 命令。 以下是使用 SET 和 EXPIRE 命令的例子: SET mykey somevalue EXPIRE mykey 30上面的命令首先使用 SET 命令创建了一个名为…

做公众号选择图片的网站无锡网络推广哪家好

昨天刚写完侧滑菜单的实例,今天在CocoaChina网站上看到一篇非常好的侧滑菜单设计案例文章,分享给大家。http://www.cocoachina.com/macdev/uiue/2013/0716/6609.html 自从Facebook使用了左右滑动菜单导航以后,国内外各个App都竞相模仿该功能&…

做两个阿里网站一般可以在哪些网站做推广

1005 继续(3n1)猜想 (25 分) 卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对 n3 进行验证的时候,我们…

dw中怎样做网站二级页面本地网站建设电话

随着科技的飞速发展,全球软件开发大会(QCon)作为行业领先的技术盛会,为世界各地的专业人士提供了交流与学习的平台。本次大会汇集了全球的软件开发者、架构师、项目经理等,共同探讨软件开发的最新趋势、技术与实践。本…

北京正规网站建设有几种企业建站划算吗

pinia的使用跟vuex很像,去除了很多没用的api,写法有两种,一种老式的选项式api还有一种组合式api,用哪种根据自己喜好来,以下示例为组合式api 更多教程参考官网:pinia官网https://pinia.vuejs.org/zh/ 安装…

网站维护一般多久网站空间去哪买

一、函数sigqueue sigqueue函数原型: 函数作用:新的发送信号系统调用,主要是针对实时信号提出的支持信号带有参数,与函数sigaction()配合使用 int sigqueue(pid_t pid, int signo, const union sigval v…

买了网站 怎么做呢全球速卖通官网

清晰讲解SQL语句中的外连接,通用于Mysql和Oracle,全是干货哦直入主题:我们做一个操作,将员工SCOTT的部门去掉,再次通过内连接查看数据,看看会产生什么现象?使用内连接,查询数据问题&…

网站制作好吗广告公司经营范围

使用VSCode作为Vue项目的开发环境后,我们需要了解如何打包Vue项目。本文将从多个方面对如何在VSCode中打包Vue项目进行详细阐述。 一、安装依赖 在打包Vue项目之前,我们需要先安装项目所需的依赖。在Vue项目中,可以通过以下命令安装依赖&am…

营销型网站建设公司网络推广建设网站的企业邮箱

一、基于结构特征的相似性度量 将特征看作向量空间中的点,通过计算两个点或者两个点组之间的距离来度量他们是否相似。 一阶度量:minkowsky距离、马氏距离 二阶度量:特征点本身有相关性,所以将特征点对之间的关系加入到相似性度量…

网站中的搜索功能怎么做的wordpress水印图片插件

709.转成小写字母 题目链接:709.转成小写字母 给你一个字符串 s ,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。 示例 1: 输入:s “Hello” 输出:“hello” 示例 2: 输入&am…

西安年网站建设抖抈app软件下载

摘要 获取客户端ip地址&#xff0c;然后使用这个ip地址获取所在的国家、省份、城市&#xff0c;可以在网站中实现IP属地&#xff0c;发布地等功能。 本文的获取IP地址信息均采自网络上免费的IP查询网站&#xff0c;通过其API或者网页HTML解析出的ip地址信息。 代码 <?p…