(伪)冒泡排序算法: 相邻的两个元素之间,如果反序则交换数值,直到没有反序的记录为止.

#include <stdio.h>

void BubbleSort(int Array[], int ArraySize)
{
int x, y, temporary; for (x = 0; x < ArraySize - 1; x++)
{
for (y = x + 1; y < ArraySize; y++)
{
if (Array[x] > Array[y])
{
temporary = Array[y];
Array[y] = Array[x];
Array[x] = temporary;
}
}
}
} int main(int argc, char* argv[])
{
int a[10] = { 2, 5, 6, 8, 2, 3, 9, 1, 8, 0 }; BubbleSort(a, 10); for (int i = 0; i < 10; i++)
{
printf("%d ", a[i]);
} system("pause");
return 0;
}

(真)冒泡排序算法: 正宗的冒泡排序就是从下往上两两比较,所以看上去就像是泡泡向上冒一样.

#include <stdio.h>

void BubbleSort(int Array[], int ArraySize)
{
int x, y, temporary; for (x = 0; x < ArraySize - 1; x++)
{
for (y = ArraySize - 1; y > x; y--)
{
if (Array[y-1] > Array[y])
{
temporary = Array[y-1];
Array[y-1] = Array[y];
Array[y] = temporary;
}
}
}
} int main(int argc, char* argv[])
{
int a[10] = { 2, 5, 6, 8, 2, 3, 9, 1, 8, 0 }; BubbleSort(a, 10); for (int i = 0; i < 10; i++)
{
printf("%d ", a[i]);
} system("pause");
return 0;
}

选择排序算法: 该算法通过Array-x次关键字比较,从Array-x+1个记录中选出关键字最小的记录,并和第x个记录交换.

#include <stdio.h>

void SelectSort(int Array[], int ArraySize)
{
int x, y, minimum, temporary; for (x = 0; x < ArraySize - 1; x++)
{
minimum = x; // 假设x是最小的数
for (y = x + 1; y < ArraySize; y++)
{ // 将假设中的最小值进行比对
if (Array[y] < Array[minimum])
minimum = y;
}
if (minimum != x)
{ // 循环结束后进行交换
temporary = Array[minimum];
Array[minimum] = Array[x];
Array[x] = temporary;
}
}
} int main(int argc, char* argv[])
{
int a[10] = { 2, 5, 6, 8, 2, 3, 9, 1, 8, 0 }; SelectSort(a, 10); for (int i = 0; i < 10; i++)
{
printf("%d ", a[i]);
} system("pause");
return 0;
}

直接插入排序: 该算法将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录数增加1的有序表.

#include <stdio.h>

void InsertSort(int Array[], int ArraySize)
{
int x, y, temporary; for (x = 1; x < ArraySize; x++)
{
if (Array[x] < Array[x - 1])
{
temporary = Array[x]; // 把小的元素放入temp
for (y = x - 1; Array[y] > temporary; y--)
{
Array[y + 1] = Array[y];
}
Array[y + 1] = temporary;
}
}
} int main(int argc, char* argv[])
{
int a[10] = { 2, 5, 6, 8, 2, 3, 9, 1, 8, 0 }; InsertSort(a, 10); for (int i = 0; i < 10; i++)
{
printf("%d ", a[i]);
} system("pause");
return 0;
}

(分组)希尔排序: 在直接插入排序进行升级,把记录进行分组,分割成若干个子序列,把每一个子序列分别进行插入排序.

#include <stdio.h>

void ShellSort(int Array[], int ArraySize)
{
int x, y, temporary;
int interval = ArraySize; // 设置排序间隔 do
{
interval = interval / 3 + 1;
for (x = interval; x < ArraySize; x++)
{
if (Array[x] < Array[x - interval])
{
temporary = Array[x]; // 把小的元素放入temp
for (y = x - interval; Array[y] > temporary; y -= interval)
{
Array[y + interval] = Array[y];
}
Array[y + interval] = temporary;
}
}
} while (interval > 1);
} int main(int argc, char* argv[])
{
int a[10] = { 2, 5, 6, 8, 2, 3, 9, 1, 8, 0 }; ShellSort(a, 10); for (int i = 0; i < 10; i++)
{
printf("%d ", a[i]);
} system("pause");
return 0;
}

归并排序算法: 将数组拆分成两部分,然后将每部分再次拆成两部分,直到无法拆了为止,然后两两比较,最后在归并到一起.

#include <stdio.h>
#define MAXSIZE 10 // 实现归并,并把最后的结果存放到list1里面
void merging(int *list1,int list1_size,int *list2,int list2_size)
{
int list1_sub = 0, list2_sub = 0, k = 0;
int temporary[MAXSIZE]; while (list1_sub < list1_size && list2_sub < list2_size)
{
if (list1[list1_sub] < list2[list2_sub])
temporary[k++] = list1[list1_sub++];
else
temporary[k++] = list2[list2_sub++];
}
while (list1_sub < list1_size)
temporary[k++] = list1[list1_sub++];
while (list2_sub < list2_size)
temporary[k++] = list2[list2_sub++]; // 最后将归并后的结果存入到list1变量中
for (int m = 0; m < (list1_size + list2_size); m++)
list1[m] = temporary[m];
} // 拆分数组,拆分以后传入merging函数实现归并
void MergeSort(int Array[], int ArraySize)
{ // 如果大于1则终止拆解数组
if (ArraySize > 1)
{
int *list1 = Array; // 左边部分
int list1_size = ArraySize / 2; // 左边的尺寸,每次是n/2一半 int *list2 = Array + ArraySize / 2; // 右半部分,就是左半部分的地址加上右半部分的尺寸
int list2_size = ArraySize - list1_size; // 右半部分尺寸 MergeSort(list1, list1_size); // 递归拆解数组1
MergeSort(list2, list2_size); // 递归拆解数组2
merging(list1, list1_size, list2, list2_size); // 归并
}
} int main(int argc, char* argv[])
{
int a[10] = { 2, 5, 6, 8, 2, 3, 9, 1, 8, 0 }; MergeSort(a, 10);
for (int i = 0; i < 10; i++)
printf("%d ", a[i]); system("pause");
return 0;
}

迭代归并排序: 代码指针存在问题.

#include <stdio.h>
#include <stdlib.h> void MergeSort(int k[], int n)
{
int i, left_min, left_max, right_min, right_max;
// 申请临时空间
int *temp = (int *)malloc(n * sizeof(int)); for (i = 1; i < n; i *= 2) // i => 步长,每次对比两个元素
{
for (left_min = 0; left_min < n - i; left_min = right_max)
{
right_min = left_max = left_min + i;
right_max = left_max + i;
if (right_max > n) // 有时数组无法整除,我们来处理一下
{
right_max = n;
}
int next = 0;
while (left_min < left_max && right_min < right_max)
{
if (k[left_min] < k[right_min])
{
temp[next++] = k[left_min];
}
else
{
temp[next++] = k[right_min];
}
} while (left_min < left_max)
{
k[--right_min] = k[--left_min];
}
while (next >0)
{
k[--right_min] = temp[--next];
}
}
}
} int main(int argc, char* argv[])
{
int a[10] = { 2, 5, 6, 8, 2, 3, 9, 1, 8, 0 }; MergeSort(a, 10);
for (int i = 0; i < 10; i++)
printf("%d ", a[i]); system("pause");
return 0;
}

迭代归并排序2: 代码指针存在问题.

#include <stdio.h>
#include <stdlib.h> // 定义链表节点类型
struct LinkNode
{
int data;
struct LinkNode *next;
}; struct LinkNode *init_link()
{ // 创建一个头结点,头结点不需要添加任何数据
struct LinkNode *header = malloc(sizeof(struct LinkNode));
header->data = 0;
header->next = NULL; struct LinkNode *p_end = header; // 创建一个尾指针 int val = -1;
while (1)
{
scanf("%d", &val); // 输入插入的数据
if (val == -1) // 如果输入-1说明输入结束了
break; // 先创建新节点
struct LinkNode *newnode = malloc(sizeof(struct LinkNode));
newnode->data = val;
newnode->next = NULL; // 将节点插入到链表中
p_end->next = newnode;
// 更新尾部指针指向
p_end = newnode;
}
return header;
} // 遍历链表
int foreach_link(struct LinkNode *header)
{
if (NULL == header || header->next == NULL)
return 0; while (header->next != NULL)
{
printf("%d \n", header->data);
header = header->next;
}
return 1;
} // 在header节点中oldval插入数据
void insert_link(struct LinkNode *header,int oldval,int newval)
{
struct LinkNode *pPrev = header;
struct LinkNode *Current = pPrev->next; if (NULL == header)
return; while (Current != NULL)
{
if (Current->data == oldval)
break; pPrev = Current;
Current = Current->next;
}
// 如果值不存在则默认插入到尾部
//if (Current == NULL)
// return; // 创建新节点 struct LinkNode *newnode = malloc(sizeof(struct LinkNode));
newnode->data = newval;
newnode->next = NULL; // 新节点插入到链表中
newnode->next = Current;
pPrev->next = newnode;
} // 清空链表
void clear_link(struct LinkNode *header)
{
// 辅助指针
struct LinkNode *Current = header->next; while (Current != NULL)
{
// 保存下一个节点地址
struct LinkNode *pNext = Current->next;
printf("清空数据: %d \n", Current->data);
free(Current);
Current = pNext;
}
header->next = NULL;
} // 删除值为val的节点
int remove_link(struct LinkNode *header, int delValue)
{
if (NULL == header)
return; // 设置两个指针,指向头结点和尾结点
struct LinkNode *pPrev = header;
struct LinkNode *Current = pPrev->next; while (Current != NULL)
{
if (Current->data == delValue)
{
// 删除节点的过程
pPrev->next = Current->next;
free(Current);
Current = NULL;
}
} // 移动两个辅助指针
pPrev = Current;
Current = Current->next;
} // 销毁链表
void destroy_link(struct LinkNode *header)
{
if (NULL == header)
return; struct LinkNode *Curent = header;
while (Curent != NULL)
{
// 先来保存一下下一个节点地址
struct LinkNode *pNext = Curent->next;
free(Curent);
// 指针向后移动
Curent = pNext;
}
} // 反响排序
void reverse_link(struct LinkNode *header)
{
if (NULL == header)
return; struct LinkNode *pPrev = NULL;
struct LinkNode *Current = header->next;
struct LinkNode * pNext = NULL; while (Current != NULL)
{
pNext = Current->next;
Current->next = pPrev;
pPrev = Current;
Current = pNext;
}
header->next = pPrev;
} int main(int argc, char* argv[])
{ struct LinkNode * header = init_link(); reverse_link(header);
foreach_link(header); clear_link(header);
system("pause");
return 0;
}

以下代码来源于网络

技巧01:冒泡排序

#include <stdio.h>
int main(int argc, char *argv[])
{
int i,j,t,a[11];
printf ("please input 10 numbers:\n");
for(i=1;i<11;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++) //i代表比较的趟数
for(j=1;j<11-i;j++) //j代表每趟两两比较的次数
if (a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
printf ("the sorted numbers:\n");
for(i=1;i<=10;i++)
printf ("%5d",a[i]);
return 0;
}

技巧02:选择排序

#include <stdio.h>
int main(int argc, char *argv[])
{
int i,j,t,a[11];
printf ("please input 10 numbers:\n");
for(i=1;i<11;i++)
scanf("%d",&a[i]);
for(i=1;i<=9;i++)
for(j=i+1;j<=10;j++)
if (a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
printf ("the sorted numbers:\n");
for(i=1;i<=10;i++)
printf ("%5d",a[i]);
return 0;
}

技巧03:直接插入排序

#include <stdio.h>
void insort(int s[],int n)
{ //数组的下标从2开始,0做监视哨,1 一个数据无可比性
int i,j;
for (i=2; i<=n; i++)
{
s[0]=s[i];
j=i-1;
while(s[0]<s[j])
{
s[j+1]=s[j];
j--;
}
s[j+1]=s[0];
}
}
int main(int argc, char *argv[])
{
int a[11],i;
printf ("please input number:\n");
for(i=1;i<=10;i++)
scanf("%d",&a[i]);
printf ("the original order:\n");
for(i=1;i<11;i++)
printf ("%5d",a[i]);
insort(a,10);
printf ("\nthe sorted numbers:\n");
for(i=1;i<11;i++)
printf ("%5d",a[i]);
return 0;
}

技巧04:归并排序

#include <stdio.h>
void merge(int r[],int s[],int x1,int x2,int x3)
{ //实现一次归并排序函数
int i,j,k;
i=x1; //第一部分的开始位置
j=x2+1; //第二部分的开始位置
k=x1;
while((i<=x2)&&(j<=x3))
//当i和j都在两个要合并的部分中
if (r[i]<=r[j]) //筛选两部分中较小的元素放到数组s中
{
s[k]=r[j];
i++;
k++;
}
else
{
s[k]=r[j];
j++;
k++;
}
while(i<=x2) //将x1,x2范围内的未比较的数顺次加到数组r中
s[k++]=r[i++];
while(j<=x3) //将x2,x3范围内的未比较的数顺次加到数组r中
s[k++]=r[j++];
}
void merge_sort(int r[],int s[],int m,int n)
{
int p;
int t[20];
if(m==n)
s[m]=r[m];
else
{
p=(m+n)/2;
merge_sort(r,t,m,p);
//递归调用merge_sort函数将r[m],r[p]归并成有序的t[m],t[p]
merge_sort(r,t,p+1,n);
//递归调用merge_sort函数将r[p+1],r[n]归并成有序的t[p+1],t[n]
merge(t,s,m,p,n);
//调有函数将前两部分归并到s[m],s[n]
}
}
main()
{
int a[11];
int i;
printf ("please input 10 numbers:\n");
for(i=1;i<=10;i++) //从键盘中输入10个数
scanf("%d",&a[i]);
merge_sort(a,a,1,10); //调用merge_sort函数进行归并排序
printf ("the sorted numbers:\n");
for(i=1;i<=10;i++)
printf ("%5d",a[i]); //将排序后的结构输出
return 0;
}

技巧05:希尔排序(插入排序的改进)

#include <stdio.h>
void shsort(int s[],int n)
{
int i,j,d;
d=n/2; //确定固定增量值
while(d>=1)
{
for (i=d+1; i<=n; i++) //数组下标从d+1开始进行直接插入排序
{
s[0]=s[i]; //设置监视哨
j=i-d; //确定要进行比较的元素的最右边位置
while((j>0)&&(s[0]<s[j]))
{
s[j+d]=s[j]; //数据右移
j=j-d; //向左移d个位置
}
s[j+d]=s[0]; //在确定的位置插入s[i]
}
d=d/2; //增量变为原来的一半
}
}
int main(int argc, char *argv[])
{
int a[11],i;
printf ("please input numbers:\n");
for(i=1;i<=10;i++)
scanf("%d",&a[i]);
shsort(a,10);
printf ("the sorted numbers:\n");
for(i=1;i<=10;i++)
printf ("%5d",a[i]);
return 0;
}

技巧06:快速排序(冒泡排序的改进)

主要的算法思想是在带排序的n个数据中取第一个数据作为基准值,将所有的记录分为3组,使得

第一组中各数据值均小于或等于基准值,第二组便是做基准值的数据,第三组中个数举值均大于

或等于基准值。这便实现了第一趟分隔,然后再对第一组和第三组分别重复上述方法。

#include <stdio.h>
void qusort(int s[],int start,int end)
{ //自定义快排函数
int i,j;
i=start;
j=end;
s[0]=s[start]; //设置基准值
while(i<j)
{
while(i<j&&s[0]<s[j])
j--; //位置左移
if (i<j)
{
s[i]=s[j]; //将s[j]放到s[i]的位置上
i++; //位置右移
}
while(i<j&&s[i]<=s[0])
i++; //位置右移
if (i<j)
{
s[j]=s[i]; //将大于基准值的s[j]放到s[i]位置
j--; //位置右移
}
}
s[i]=s[0]; //将基准值放入指定位置
if(start<i)
qusort(s,start,j-1); //对分隔出的部分递归调用函数qusort()
if(i<end)
qusort(s,j+1,end);
}
int main(int argc, char *argv[])
{
int a[11],i;
printf ("please input numbers:\n");
for(i=1;i<=10;i++)
scanf("%d",&a[i]);
qusort(a,1,10);
printf ("the sorted numbers:\n");
for(i=1;i<=10;i++)
printf ("%5d",a[i]);
return 0;
}

技巧07:顺序查找

#include <stdio.h>
void search(int key,int a[],int n)
{
int i,count = 0,count1=0;
for (i=0; i<n; i++)
{
count++;
if (a[i]==key)
{
printf ("serch %d times a[%d]=%d\n",count,i,key);
count1++;
}
}
if(count1==0)
printf ("no found!\n");
}
int main(int argc, char *argv[])
{
int n,key,a[100],i;
printf ("please input the length of array:\n");
scanf("%d",&n);
printf ("please input element:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf ("please input the number which do you want to search:\n");
scanf("%d",&key);
search(key,a,n);
return 0;
}

技巧08:二分查找

#include <stdio.h>
void binary_search(int key,int a[],int n)
{
int low,high,mid,count=0,count1=0;
low = 0;
high = n-1;
while(low<high)
{
count++; //记录查找次数
mid=(low+high)/2; //求出中间位置
if(key<a[mid]) //当key小于中间值
high=mid-1; //确定左子表范围
else if(key>a[mid]) //当key大于中间值
low=mid+1; //确定右子表范围
else if(key==a[mid]) //当key等于中间值证明查找成功
{
printf ("success!\nsearch %d times! a[%d]=%d\n",count,mid,key);
count1++; //count1记录查找成功次数
break;
}
}
if(count1==0)
printf ("no found!\n");
}
int main(int argc, char *argv[])
{
int i,key,a[100],n;
printf ("please input the length of array:\n");
scanf("%d",&n);
printf ("please input the element:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf ("please input the number which do you want to serch:\n");
scanf("%d",&key);
binary_search(key,a,n);
return 0;
}

技巧09:分块查找

#include <stdio.h>
struct index //定义块的结构
{
int key;
int start;
int end;
}index_table[4]; //定义结构体数组
int block_search(int key,int a[]) //自定义实现分块查找
{
int i,j;
i=1;
while(i<=3&&key>index_table[i].key) //确定在哪个块中
i++;
if(i>3) //大于分得的块数,则返回0
return 0;
j=index_table[i].start; //j等于块范围的起始值
while(j<=index_table[i].end&&a[j]!=key) //在确定的块内进行查找
j++;
if(j>index_table[i].end) //如果大于块范围的结束值,则说明没有要查找的数
j=0;
return j;
}
int main(int argc, char *argv[])
{
int i,j=0,k,key,a[16];
printf ("please input the number:\n");
for(i=1;i<16;i++)
scanf("%d",&a[i]);
for (i=1; i<=3; i++)
{
index_table[i].start=j+1; //确定每个范围的起始行
j=j+1;
index_table[i].end=j+4; //确定每个块范围的结束值
j=j+4;
index_table[i].key=a[j]; //确定每个块范围中元素的最大值
}
printf ("please inpu the number whick do you want to search:\n");
scanf("%d",&key);
k=block_search(key,a);
if(k!=0)
printf ("success ! the position is :%d\n",k);
else
printf ("no found!\n");
return 0;
}

技巧10:哈系查找(没能很好的运行)

#include <stdio.h>
#include <time.h>
#define Max 11
#define N 8
int hashtable[Max];
int func(int value)
{
return value % Max; //哈希函数
}
int search(int key) //自定义函数实现哈希函数
{
int pos,t;
pos=func(key); //哈希函数确定出的位置
t=pos; //t存放确定出的位置
while(hashtable[t]!=key && hashtable[t]!=-1)
//如果该位置上不等与要查找的关键字且不为空
{
t=(t+1)%Max; //利用线性探测求出下一个位置
if(pos==t)
//如果经多次探测又回到原来用哈希函数求出的位置则
//说明要查找的数不存在
return -1;
}
if(hashtable[t]==-1) //如果探测的位置是-1则说明要查找的数不存在
return 0;
else
return t;
}
void creathash(int key) //自定义函数创建哈系表
{
int pos,t;
pos = func(key); //哈希函数确定元素的位置
t = pos;
while(hashtable[t]!=-1)
//如果该位置有元素存在则在则进行线性探测再散列
{
t=(t+1)%Max;
if(pos==t)
//如果冲突处理后确定的位置与原位置相同则说明哈系表已满
{
printf ("hash table is full\n");
return ;
}
}
hashtable[t]=key; //将元素放入确定的位置
}
int main(int argc, char *argv[])
{
int flag[50];
int i,j,t;
for(i=0;i<Max;i++)
hashtable[i]=-1; //哈希表中初始化位置全置-1
for(i=0;i<50;i++)
flag[i]=0; //50以内所有数未产生时均标志为0
rand((unsigned long)time(0)); //利用系统时间做种子产生随机数
i=0;
while(i != N)
{
t=rand()%50; //产生一个50以内的随机数附给t
if (flag[t]=0) //查看t是否产生过
{
creathash(t); //调用函数创建哈希表
printf ("%2d:\n",t); //将该元素输出
for (j=0; j < Max; j++)
printf ("(%2d) \n",hashtable[j]); //输出哈希表的内容
printf ("\n");
flag[t]=1; //将产生的这个数标志为1
i++; //i自加
}
}
printf ("please input number whick do you want to search:\n");
scanf("%d",&t); //输入要查找的元素
if (t>0&&t<50)
{
i=search(t); //调用search进行哈系查找
if(i != -1)
printf ("success! the position is:%d\n",i); //若找到该元素则输出其位置
else
printf ("sorry,no found!\n"); //未找到输出提示信息
}
else
printf ("input error!\n");
return 0;
}

C/C++ 常用排序算法整理的更多相关文章

  1. Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...

  2. 常用排序算法的python实现和性能分析

    常用排序算法的python实现和性能分析 一年一度的换工作高峰又到了,HR大概每天都塞几份简历过来,基本上一天安排两个面试的话,当天就只能加班干活了.趁着面试别人的机会,自己也把一些基础算法和一些面试 ...

  3. 常用排序算法java实现

    写在前面:纸上得来终觉浅.基本排序算法的思想,可能很多人都说的头头是到,但能说和能写出来,真的还是有很大区别的. 今天整理了一下各种常用排序算法,当然还不全,后面会继续补充.代码中可能有累赘或错误的地 ...

  4. c#实现常用排序算法

    让我们先看一看常用排序算法的效率对比 接着请看代码和注释~ using System; using System.Collections.Generic; using System.Linq; usi ...

  5. 转载部长一篇大作:常用排序算法之JavaScript实现

    转载部长一篇大作:常用排序算法之JavaScript实现 注:本文是转载实验室同门王部长的大作,找实习找工作在即,本文颇有用处!原文出处:http://www.cnblogs.com/ywang172 ...

  6. Java 常用排序算法/程序员必须掌握的 8大排序算法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...

  7. 面试中常用排序算法实现(Java)

    当我们进行数据处理的时候,往往需要对数据进行查找操作,一个有序的数据集往往能够在高效的查找算法下快速得到结果.所以排序的效率就会显的十分重要,本篇我们将着重的介绍几个常见的排序算法,涉及如下内容: 排 ...

  8. 我们一起来排序——使用Java语言优雅地实现常用排序算法

    破阵子·春景 燕子来时新社,梨花落后清明. 池上碧苔三四点,叶底黄鹂一两声.日长飞絮轻. 巧笑同桌伙伴,上学径里逢迎. 疑怪昨宵春梦好,元是今朝Offer拿.笑从双脸生. 排序算法--最基础的算法,互 ...

  9. Python实现常用排序算法

    Python实现常用排序算法 冒泡排序 思路: 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完 ...

  10. 第四百一十五节,python常用排序算法学习

    第四百一十五节,python常用排序算法学习 常用排序 名称 复杂度 说明 备注 冒泡排序Bubble Sort O(N*N) 将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮 ...

随机推荐

  1. 阿里云视频云vPaaS低代码音视频工厂:极速智造,万象空间

    当下音视频技术越来越广泛地应用于更多行各业中,但因开发成本高.难度系数大等问题,掣肘了很多企业业务的第二增长需求.阿里云视频云基于云原生.音视频.人工智能等先进技术,提供易接入.强拓展.高效部署和覆盖 ...

  2. QA32增强

    一.QA32报表新增字段 二.QA32报表程序RQEEAL10 结构增加字段,该结构就是报表展示字段列的结构 表新增字段 找到报表展示的子例程 找到程序RQEEAL10,子例程中新增隐式增强 隐式增强 ...

  3. BOM批量查询

     1业务要求 1.当多层展开时: 根据"BOM应用程序"字段CAPID在TC04中取出"选择ID"TC04-CSLID: 再根据TCS41-CSLID= TC0 ...

  4. 8、SpringBoot 事务

    系列导航 springBoot项目打jar包 1.springboot工程新建(单模块) 2.springboot创建多模块工程 3.springboot连接数据库 4.SpringBoot连接数据库 ...

  5. vue 状态管理 四、Action用法

    系列导航 vue 状态管理 一.状态管理概念和基本结构 vue 状态管理 二.状态管理的基本使用 vue 状态管理 三.Mutations和Getters用法 vue 状态管理 四.Action用法 ...

  6. 如何将接口的返回值中所需信息提取出来作为其他接口的入参使用(postman与jmeter的使用)

    一.背景: 偶尔会用到一个场景,两个接口之前的调用有依赖关系,将其中一个的返回参数中的部分信息取出来作为入参在第二个接口中使用,代码内是比较好实现,只要定义一个变量,用于参数传递. 如果是测试过程中使 ...

  7. MongoDB 根据多个条件批量修改

    转载请注明出处: MongoDB 根据单个条件修改的sql 如下: db.collection_name.update({"userid":"1111111"} ...

  8. Spring 事务失效场景总结

    本文为博主原创,未经允许不得转载: 1. spring的事务注解@Transactional只能放在public修饰的方法上才起作用,如果放在其他非public(private,protected)方 ...

  9. CAP-BASE

  10. [转帖]实践真知:解决 Jdbc 连接 Oracle 12c 时快时慢的问题

    https://cloud.tencent.com/developer/article/1052506 李真旭@killdb Oracle ACE,云和恩墨技术专家 个人博客:www.killdb.c ...