插入排序
void Insertion_sort(int a[A], int x)
{
int m = 0;
int ab = 0;
int temp = 0;
int ipos = 0;
int n = 0;
for (m = 1; m < x; m++)
{
temp = a[m];
ipos = m - 1;
while ((ipos >= 0) && (temp < a[ipos]))
{
a[ipos + 1] = a[ipos];
ipos--;
}
a[ipos + 1] = temp;
}
for (m = 1; m < x; m++)//拿出一個數
{
temp = a[m];//用變量存放,數組中的值不要改變
for (n = m - 1; n >= 0; n--)//這個數的前n個數
{
if (temp <= a[n]) //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
{
a[n + 1] = a[n];//則兩數交換,然後在和
if (n == 0)
{
a[0] = temp;
}
}
if (temp > a[n])
{
a[n + 1] = temp;
break;
}
}
printf("\r");
}
}
冒泡排序
int BubbleSort(int a[A], int x)
{
int ab = 1;
for (int trip = 0; trip < x; trip++)//控制比較的躺數!
{
int judge = 1;
for (int i = 0; i < x - 1 - trip; i++)//每次從頭開始,比較,每一趟可以少比一個,因爲每一趟都把最大的數篩到最後了!
{
if (a[i] > a[i + 1])//兩書交換
{
a[i] = a[i] ^ a[i + 1];
a[i + 1] = a[i] ^ a[i + 1];
a[i] = a[i] ^ a[i + 1];
judge = 0;//判斷!如果再一趟內,沒有進行任何兩數之間的交換,就不改變該zhi。從而檢測,檢測排序手機不是可以提前結束!從而避免不必要的多餘的循環
ab++;
}
}
if (judge == 1)
{
printf("BubbleSort %d!!!!!!!!!!!!!\n", ab);
return 0;
}
}
}
.
選擇排序
int Selectionsort(int a[A], int x)
{
int ab = 1;
for (int trip = 0; trip < x-1; trip++)//
{
int mine = 0;
mine = a[trip];//關鍵
int subscript = trip;//關鍵
for (int i = trip+1; i < x; i++)
{
if (mine > a[i])
{
mine = a[i];//記錄最小的值
subscript = i;//記錄下標
ab++;
}
}
a[subscript] = a[trip];//兩書交換,最小值賦值
a[trip] = mine;//關鍵
}
printf("Selectionsort %d!!!!!!!!!!!!!\n", ab);
return 0;
}
交換排序
void Exchange(int a[A],int x)
{
int ab = 1;
for (int z = 0; z < x-1; z++)//每次的起始位置!如同拿出一個數,
{
for (int y = z+1; y < x; y++)//與這個數後面的每一個數比較
{
if (a[z] > a[y])
{
a[y] = a[y] ^ a[z];
a[z] = a[y] ^ a[z];
a[y] = a[y] ^ a[z];
ab++;
}
}//將拿出來的這個數,和後面的數比較,比較完了之後,可以確保,拿出來的這個數是這個數和他以後的·所有數中最小/大的一個
//然後拿出下一個數,再進行相同操作,拿出來的每個數都是再除去前面的數的 1其他數中的最值
}
printf(" EXchange %d!!!\n",ab);
}
通過減少每次比較時大數小數交換位置時的賦值操作,來達到算法優化的目的。
快排歸併正在學習中。字符串模式匹配暴力算法即將呈現,kmp正在問老師的路上233