排序小劄記
阿新 • • 發佈:2017-11-02
pre emp urn cnblogs 元素 div fin iostream brush
直接排序:
#include <iostream> using namespace std; #define Maxsize 1024 void InsertSort(int arr[], int n) { int temp, j; for(int i=1; i<n; ++i) { temp=arr[i]; j=i-1;//由於有序序列與無序序列是相鄰的,i是無序序列的最左邊的元素,i-1則是有序序列中最右邊的元素。 while((j>=0) && (temp<arr[j])) { arr[j+1]=arr[j]; --j; } arr[j+1]=temp;//精妙之處 } } int main() { int n; int numbers[Maxsize]; while(cin >> n) { for(int i=0; i<n; ++i) cin >> numbers[i]; InsertSort(numbers, n); for(int i=0; i<n; ++i) cout << numbers[i] << ‘ ‘; cout << endl; } return 0; }
選擇排序:
#include <iostream> using namespace std; #define Maxsize 1024 void SelectSort(int arr[], int n) { int k; int temp; for(int i=0; i<n; ++i) { k=i; for(int j=i+1; j<n; ++j) if(arr[k]>arr[j]) k=j; temp=arr[i]; arr[i]=arr[k]; arr[k]=temp; } } int main() { int n; int numbers[Maxsize]; while(cin >> n) { for(int i=0; i<n; ++i) cin >> numbers[i]; SelectSort(numbers, n); for(int i=0; i<n; ++i) cout << numbers[i] << ‘ ‘; cout << endl; } return 0; }
冒泡排序:
#include <iostream> using namespace std; #define Maxsize 1024 void BubleSort(int arr[], int n) { int flag, temp; for(int i=n-1; i>=1; --i) { flag=0; for(int j=1; j<=i; ++j) if(arr[j-1] > arr[j]) { temp=arr[j]; arr[j]=arr[j-1]; arr[j-1]=temp; flag=1; } if(flag==0) return;//經典之處 } } int main() { int n; int numbers[Maxsize]; while(cin >> n) { for(int i=0; i<n; ++i) cin >> numbers[i]; BubleSort(numbers, n); for(int i=0; i<n; ++i) cout << numbers[i] << ‘ ‘; cout << endl; } return 0; }
排序小劄記