关键字: sort, 排序方法

关键字: sort, 排序方法
sort(sortfunction)为javascript的数组对象(Array)的一个方法,提供排序功能
参数 sortFunction 为可选项,是用来确定排序原则的js函数,
这个函数有两个参数,分别代表每次排序比较时的两个数组项,
如果这个函数的返回值小于0 则不交换原数组中元素的位置,否则交换原数组中元素的位置。

如果这个参数被省略, 那么元素将按照 ASCII 字符顺序进行升序排列。

Demo1默认按字母排序
Js代码 复制代码
  1. var arr = ['b','cc','abc','fzj','xij','acd','yab'];    
  2. arr.sort();    
  3. for (var i = 0; i < arr.length; i++) {    
  4.     document.writeln(nameArr[i]);    
  5. }   

结果:abc acd b cc fzj xij yab

Demo2数字排序,sort(prama)方法带参数
Js代码 复制代码
  1. //降序函数   
  2. var desc = function(x,y)     
  3. {     
  4.     if (x > y)       
  5.         return -1;  //返回一个小于0 的数即可   
  6.     else         
  7.         return 1;  //返回一个大于0 的数即可   
  8. }     
  9. //升序函数   
  10. var asc = function(x,y)     
  11. {     
  12.     if (x > y)       
  13.         return 1;  //返回一个大于0 的数即可   
  14.     else             
  15.         return -1;  //返回一个小于0 的数即可   
  16. }   
  17.   
  18. var arr2 = [4,6,4,2,7,9,0,1];     
  19. arr2.sort(desc); //降序排序   
  20. document.writeln(arr2);     
  21. document.writeln("<br>");     
  22. arr2.sort(asc); //升序排序   
  23. document.writeln(arr2);   

结果:
9,7,6,4,4,2,1,0
0,1,2,4,4,6,7,9

Demo2的简单算法
Js代码 复制代码
  1. var arr2 = [4,6,4,2,7,9,0,1];     
  2. arr2.sort(function(a,b){return a - b});   
  3. document.writeln(arr2);     
  4. document.writeln("<br>");     
  5. arr2.sort(function(a,b){return b - a});   
  6. document.writeln(arr2);   

结果:
0,1,2,4,4,6,7,9
9,7,6,4,4,2,1,0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
插入排序: ``` void insertionSort(int arr[], int n) { for (int i = 1; i < n; ++i) { int key = arr[i]; int j = i - 1; while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = key; } } ``` 堆排序: ``` void heapify(int arr[], int n, int i) { int largest = i; int l = 2 * i + 1; int r = 2 * i + 2; if (l < n && arr[l] > arr[largest]) largest = l; if (r < n && arr[r] > arr[largest]) largest = r; if (largest != i) { swap(arr[i], arr[largest]); heapify(arr, n, largest); } } void heapSort(int arr[], int n) { for (int i = n / 2 - 1; i >= 0; i--) heapify(arr, n, i); for (int i = n - 1; i >= 0; i--) { swap(arr[0], arr[i]); heapify(arr, i, 0); } } ``` 快速排序: ``` int partition(int arr[], int low, int high) { int pivot = arr[high]; int i = (low - 1); for (int j = low; j <= high - 1; j++) { if (arr[j] < pivot) { i++; swap(arr[i], arr[j]); } } swap(arr[i + 1], arr[high]); return (i + 1); } void quickSort(int arr[], int low, int high) { if (low < high) { int pi = partition(arr, low, high); quickSort(arr, low, pi - 1); quickSort(arr, pi + 1, high); } } ``` 冒泡排序: ``` void bubbleSort(int arr[], int n) { for (int i = 0; i < n - 1; i++) for (int j = 0; j < n - i - 1; j++) if (arr[j] > arr[j + 1]) swap(arr[j], arr[j + 1]); } ``` 完整程序实现如下: ``` #include <iostream> using namespace std; void insertionSort(int arr[], int n) { for (int i = 1; i < n; ++i) { int key = arr[i]; int j = i - 1; while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = key; } } void heapify(int arr[], int n, int i) { int largest = i; int l = 2 * i + 1; int r = 2 * i + 2; if (l < n && arr[l] > arr[largest]) largest = l; if (r < n && arr[r] > arr[largest]) largest = r; if (largest != i) { swap(arr[i], arr[largest]); heapify(arr, n, largest); } } void heapSort(int arr[], int n) { for (int i = n / 2 - 1; i >= 0; i--) heapify(arr, n, i); for (int i = n - 1; i >= 0; i--) { swap(arr[0], arr[i]); heapify(arr, i, 0); } } int partition(int arr[], int low, int high) { int pivot = arr[high]; int i = (low - 1); for (int j = low; j <= high - 1; j++) { if (arr[j] < pivot) { i++; swap(arr[i], arr[j]); } } swap(arr[i + 1], arr[high]); return (i + 1); } void quickSort(int arr[], int low, int high) { if (low < high) { int pi = partition(arr, low, high); quickSort(arr, low, pi - 1); quickSort(arr, pi + 1, high); } } void bubbleSort(int arr[], int n) { for (int i = 0; i < n - 1; i++) for (int j = 0; j < n - i - 1; j++) if (arr[j] > arr[j + 1]) swap(arr[j], arr[j + 1]); } int main() { int arr[] = {41, 62, 13, 84, 35, 96, 57, 39, 79, 61, 15, 83}; int n = sizeof(arr) / sizeof(arr[0]); cout << "Original array:\n"; for (int i = 0; i < n; i++) cout << arr[i] << " "; cout << endl; insertionSort(arr, n); cout << "Array sorted using insertion sort:\n"; for (int i = 0; i < n; i++) cout << arr[i] << " "; cout << endl; heapSort(arr, n); cout << "Array sorted using heap sort:\n"; for (int i = 0; i < n; i++) cout << arr[i] << " "; cout << endl; quickSort(arr, 0, n - 1); cout << "Array sorted using quick sort:\n"; for (int i = 0; i < n; i++) cout << arr[i] << " "; cout << endl; bubbleSort(arr, n); cout << "Array sorted using bubble sort:\n"; for (int i = 0; i < n; i++) cout << arr[i] << " "; cout << endl; return 0; } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值