ホームページ ウェブフロントエンド jsチュートリアル フロントエンドのいくつかの一般的な JS ソート コード

フロントエンドのいくつかの一般的な JS ソート コード

May 07, 2018 am 09:17 AM
javascript フロントエンド 選別

jsを使用する場合、ソートの問題がよく発生します。この記事では、jsのソートの問題について詳しく説明します。

1. バブルソート

function bubbleSort(arr){
  var i = 0,
      j = 0;
  for(i=1; i<arr.length; i++){
    for(j=0; j<=arr.length-i; j++){
      var temp = 0;
      // ">" 从小到大排序
      // "<" 从大到小排序
      if(arr[j] > arr[j+1]){
        temp = arr[j];
        arr[j] = arr[j+1];
        arr[j+1] = temp;
      }
    }
  }
  return arr;
}
ログイン後にコピー

3. 双方向マージ

function quickSort(arr,l,r){
  if(l < r){
    var i = l, j = r, x = arr[i];
    while(i<j){
      while(i<j && arr[j]>x)
        j--;
      
      if(i<j)
        //这里用i++,被换过来的必然比x小,赋值后直接让i自加,不用再比较,可以提高效率
        arr[i++] = arr[j];
      
      while(i<j && arr[i]<x)
        i++;
      
      if(i<j)
        //这里用j--,被换过来的必然比x大,赋值后直接让j自减,不用再比较,可以提高效率
        arr[j--] = arr[i];
    }
    arr[i] = x;
    
    quickSort(arr, l, i-1);
    quickSort(arr, i+1, r);
  }
}
ログイン後にコピー

1. 文字列を反転する

function merge(left, right) {
    var result = [],
        il = 0,
        ir = 0;
    while (il < left.length && ir < right.length) {
        if (left[il] < right[ir]) {
            result.push(left[il++]);
        } else {
            result.push(right[ir++]);
        }
    }
    while(left[il]){
        result.push(left[il++]);
    }
    while(right[ir]){
        result.push(right[ir++]);
    }
    return result;
}
ログイン後にコピー

アイデア 2: 変換配列操作

function palindrome(str){
  // \W匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。
  var re = /[\W_]/g;
  // 将字符串变成小写字符,并干掉除字母数字外的字符
  var lowRegStr = str.toLowerCase().replace(re,&#39;&#39;);
  // 如果字符串lowRegStr的length长度为0时,字符串即是palindrome
  if(lowRegStr.length===0) return true;
  // 如果字符串的第一个和最后一个字符不相同,那么字符串就不是palindrome
  if(lowRegStr[0]!=lowRegStr[lowRegStr.length-1]) return false;
  //递归
  return palindrome(lowRegStr.slice(1,lowRegStr.length-1));
}
ログイン後にコピー

3. 指定された長さのランダムな文字列を生成します

思路一:反向遍历字符串
function reverseString(str){  
  var tmp = &#39;&#39;;  
   for(var i=str.length-1; i>=0; i--)    
   tmp += str[i];  
   return tmp
 }
ログイン後にコピー

4. 文字列内の最も頻繁に使用される文字をカウントします

1. 配列の重複排除

function reverseString(str){
  var arr = str.split("");
  var i = 0,j = arr.length-1;
  while(i<j){
    tmp = arr[i];
    arr[i] = arr[j];
    arr[j] = tmp;
    i++;
    j--;
  }
  return arr.join("");
}
ログイン後にコピー

2.

function randomString(n){
  var str = &#39;abcdefghijklmnopqrstuvwxyz0123456789&#39;;
  var tmp = &#39;&#39;;
  for(var i=0; i<n; i++) {
    tmp += str.charAt(Math.round(Math.random()*str.length));
  }
  return tmp;
}
ログイン後にコピー

その他の一般的なアルゴリズム

1. 階乗

非再帰実装

function findMaxDuplicateChar(str) {
  if(str.length == 1) {
    return str;
  }
  var charObj = {};
  for(var i = 0; i < str.length; i++) {
    if(!charObj[str.charAt(i)]) {
      charObj[str.charAt(i)] = 1;
    } else {
      charObj[str.charAt(i)] += 1;
    }
  }
  var maxChar = &#39;&#39;,
      maxValue = 1;
  for(var k in charObj) {
    if(charObj[k] >= maxValue) {
      maxChar = k;
      maxValue = charObj[k];
    }
  }
  return maxChar + &#39;:&#39; + maxValue;
}
ログイン後にコピー

再帰実装

function unique(arr){
  var obj = {}
  var result = []
  for(var i in arr){
    if(!obj[arr[i]]){
      obj[arr[i]] = true;
      result.push(arr[i]);
    }
  }
  return result;
}
ログイン後にコピー

2. フィボナッチ数列の生成

強制再帰実装

function getMaxProfit(arr){
  var min = arr[0],
      max = arr[0];
  for(var i = 0; i < arr.length; i++){
    if(arr[i] < min) min = arr[i];
    if(arr[i] > max) max = arr[i];
  }
  return max - min;
}
ログイン後にコピー

単純な非再帰実装

function factorialize(num) {
  var result = 1;
    if(num < 0) return -1;
    if(num == 0 || num == 1) return 1;
    while(num>1) {
      result *= num--;
    }
    return result;
}
ログイン後にコピー

3. 二等分する

非再帰実装

function factorialize(num) {
  var result = 1;
  if(num < 0) return -1;
  if(num == 0 || num == 1) return 1;
  if(num > 1) return num*factorialize(num-1);
}
ログイン後にコピー

再帰実装

function getfib(n){
  if(n == 0) return 0;
  if(n == 1) return 1;
  if(n > 1) return getfib(n-1) + getfib(n-2);
}
function fibo(len){
    var fibo = [];
    for(var i = 0; i < len; i++){
      fibo.push(getfib(i));
    }
    return fibo;
}
ログイン後にコピー
この記事では、js ソートのコードをいくつか詳しく示します。関連する知識をさらに知りたい場合は、PHP の中国語 Web サイトを参照してください。

関連する推奨事項:

よく使用される 6 つの JS ソート アルゴリズムと比較

JS ソート アルゴリズムの概要

2 つの実用的な JS ソート アルゴリズムの分析

以上がフロントエンドのいくつかの一般的な JS ソート コードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 11/10で写真を撮影日ごとに並べ替える方法 Windows 11/10で写真を撮影日ごとに並べ替える方法 Feb 19, 2024 pm 08:45 PM

この記事では、Windows 11/10 で写真を撮影日順に並べ替える方法を紹介し、Windows で写真が日付順に並べ替えられない場合の対処法についても説明します。 Windows システムでは、画像ファイルを見つけやすくするために、写真を適切に整理することが重要です。ユーザーは、日付、サイズ、名前などのさまざまな並べ替え方法に基づいて写真を含むフォルダーを管理できます。さらに、必要に応じて昇順または降順を設定して、ファイルをより柔軟に整理できます。 Windows 11/10 で写真を撮影日で並べ替える方法 Windows で写真を撮影日で並べ替えるには、次の手順に従います。 [ピクチャ]、デスクトップ、または写真を配置する任意のフォルダを開きます。 リボン メニューで、

Outlook でメールを送信者、件名、日付、カテゴリ、サイズで並べ替える方法 Outlook でメールを送信者、件名、日付、カテゴリ、サイズで並べ替える方法 Feb 19, 2024 am 10:48 AM

Outlook には、作業をより効率的に管理するための多くの設定と機能が用意されています。その 1 つは、ニーズに応じてメールを分類できる並べ替えオプションです。このチュートリアルでは、Outlook の並べ替え機能を使用して、送信者、件名、日付、カテゴリ、サイズなどの基準に基づいてメールを整理する方法を学習します。これにより、重要な情報の処理と検索が容易になり、生産性が向上します。 Microsoft Outlook は、電子メールやカレンダーのスケジュールを簡単に一元管理できる強力なアプリケーションです。電子メールの送受信、整理が簡単にできるほか、内蔵のカレンダー機能により今後のイベントや予定を簡単に追跡できます。 Outlo の使い方

PHP と Vue: フロントエンド開発ツールの完璧な組み合わせ PHP と Vue: フロントエンド開発ツールの完璧な組み合わせ Mar 16, 2024 pm 12:09 PM

PHP と Vue: フロントエンド開発ツールの完璧な組み合わせ 今日のインターネットの急速な発展の時代において、フロントエンド開発はますます重要になっています。 Web サイトやアプリケーションのエクスペリエンスに対するユーザーの要求がますます高まっているため、フロントエンド開発者は、より効率的で柔軟なツールを使用して、応答性の高いインタラクティブなインターフェイスを作成する必要があります。フロントエンド開発の分野における 2 つの重要なテクノロジーである PHP と Vue.js は、組み合わせることで完璧なツールと見なされます。この記事では、PHP と Vue の組み合わせと、読者がこれら 2 つをよりよく理解し、適用できるようにするための詳細なコード例について説明します。

WPS スコアを並べ替える方法 WPS スコアを並べ替える方法 Mar 20, 2024 am 11:28 AM

私たちの仕事では、wps ソフトウェアをよく使用します。wps ソフトウェアではデータを処理する方法がたくさんあり、機能も非常に強力です。平均値や要約などを求める関数をよく使用します。統計データに使用できるメソッドは、WPS ソフトウェア ライブラリで誰でも利用できるように用意されています。以下では、WPS でスコアをソートする手順を紹介します。これを読んだ後、経験から学ぶことができます。 1. まず、ランク付けする必要があるテーブルを開きます。以下に示すように。 2. 次に、数式 =rank(B2, B2: B5, 0) を入力します。必ず 0 を入力してください。以下に示すように。 3. 数式を入力した後、コンピュータのキーボードの F4 キーを押すと、相対参照が絶対参照に変更されます。

フロントエンドの面接官からよく聞かれる質問 フロントエンドの面接官からよく聞かれる質問 Mar 19, 2024 pm 02:24 PM

フロントエンド開発のインタビューでは、HTML/CSS の基本、JavaScript の基本、フレームワークとライブラリ、プロジェクトの経験、アルゴリズムとデータ構造、パフォーマンスの最適化、クロスドメイン リクエスト、フロントエンド エンジニアリング、デザインパターン、新しいテクノロジーとトレンド。面接官の質問は、候補者の技術スキル、プロジェクトの経験、業界のトレンドの理解を評価するように設計されています。したがって、候補者はこれらの分野で自分の能力と専門知識を証明するために十分な準備をしておく必要があります。

Power Query で複数の列をドラッグ アンド ドロップで並べ替える方法 Power Query で複数の列をドラッグ アンド ドロップで並べ替える方法 Mar 14, 2024 am 10:55 AM

この記事では、PowerQuery で複数の列をドラッグ アンド ドロップで並べ替える方法を説明します。さまざまなソースからデータをインポートする場合、列が希望の順序にならないことがよくあります。列の順序を変更すると、分析やレポートのニーズに合った論理的な順序で列を配置できるだけでなく、データの読みやすさが向上し、フィルタリング、並べ替え、計算の実行などのタスクが高速化されます。 Excelで複数の列を並べ替えるにはどうすればよいですか? Excel で列を再配置する方法はたくさんあります。列ヘッダーを選択し、目的の場所にドラッグするだけです。ただし、多くの列を含む大きなテーブルを扱う場合、このアプローチは面倒になる可能性があります。列をより効率的に再配置するには、拡張されたクエリ エディターを使用できます。クエリの強化

エクセルで並べ替える方法 エクセルで並べ替える方法 Mar 05, 2024 pm 04:12 PM

Excel での並べ替え方法: 1. 単一列の並べ替え; 2. 複数列の並べ替え; 3. カスタム並べ替え。詳細な紹介: 1. 単一列の並べ替えは、最も一般的な並べ替え方法です。選択した列に従って並べ替えられます。2. 複数列の並べ替えは、複数の列でデータを並べ替えることを指します。通常は、最初に特定の列に従って並べ替えられます。 of、別の列で並べ替える; 3. カスタム並べ替え、ユーザーが独自のニーズに応じて並べ替え順序を定義できるようにします。

データ統計を容易にするために WPS テーブルをソートする方法 データ統計を容易にするために WPS テーブルをソートする方法 Mar 20, 2024 pm 04:31 PM

WPS は、テキスト編集、データ テーブル、PPT プレゼンテーション、PDF 形式、フローチャート、その他の機能を含む、非常に完成度の高いオフィス ソフトウェアです。その中でも私たちがよく使うのはテキスト、表、デモであり、私たちにとって最も馴染みのあるものでもあります。私たちの研究では、データ統計を作成するために WPS テーブルを使用することがあります。たとえば、学校は各生徒の得点を数えます。非常に多くの生徒の得点を手動で並べ替える必要がある場合、本当に頭の痛い作業になります。実際、WPS テーブルにはこの問題を解決する並べ替え機能があるため、心配する必要はありません。次に、WPS を並べ替える方法を一緒に学びましょう。方法のステップ: ステップ 1: まず、並べ替える必要がある WPS テーブルを開く必要があります。

See all articles