排序演算法嗎
❶ 幾種常見的排序演算法
for(i = 0; i < n; i++) for(j = 0; j < n - 1 - i; j++){if(arr[j] arr[j + 1]){arr[j] = arr[j] ^ arr[j+1]; arr[j+1] = arr[j] ^ arr[j+1]; arr[j] = arr[j] ^ arr[j+1];}}} 交換兩個數據,可以用用臨時變數,也可用以下的兩個方法a = a^b;b = a^b;a = a^b;或者 a = a + b;b = a - b;a = a - b;// 選擇排序 void SelectSort(int arr[], int n){int i, j;int min; for(i = 0; i < n - 1; i++){int index = 0; min = arr[i]; for(j = i + 1; j < n; j++) //找出 i+1 - n 無序區的最小者與arr[i]交換{if(arr[j] < min){min = arr[j];index = j;}}if(index != 0) //表明無序區有比arr[i]小的元素{arr[i] = arr[i]^arr[index]; arr[index] = arr[i]^arr[index]; arr[i] = arr[i]^arr[index];}}}感覺比冒泡法好多啦 //快速排序演算法
❷ 關於排序演算法
沒有必要這么寫,一般都不這么寫的。
以下的程序已經改寫,運行通過,運行截圖中上例是原來的程序,第二次運行是改進後的程序運行的結果:
#include <stdio.h>
#define N 80
void fun(char s[], int n)
{
int i, j;
char ch;
for (i=0; i<n-1; i++)
for (j=i+1; j<n; j++)
if (s[i] < s[j])
{
ch = s[j];
s[j]=s[i];
s[i] = ch;
}
}
main()
{
int i = 0, strlen = 0;
char str[N];
printf(" Input a string: ");
gets(str);
while (str[i] != '